【发布时间】:2019-05-20 19:24:46
【问题描述】:
我有一个正确匹配我正在处理的数据子集的正则表达式。当我针对完整的数据集运行它时,它开始失败。我注意到一些价值观是 'NA' 与 MAC 地址或 AP 名称,具体取决于列。
样本数据:
00:0b:85:57:bc:c0 00:0b:85:57:bc:c1 AP1130 10.10.163.217 Joined
00:1c:0f:81:db:80 00:1c:63:23:ac:a0 AP1140 10.10.163.216 Joined
00:1c:0f:81:fc:20 00:1b:d5:9f:7d:b2 AP1 10.10.163.215 Joined
00:1c:0f:81:fc:20 N A N A 10.10.163.215 Not joined
00:21:1b:ea:36:60 00:0c:d4:8a:6b:c1 AP2 10.10.163.214 Joined
正则表达式:
((?:(?:[0-9a-f]{2}[:-]){5})(?:[0-9a-f]{2}))(?:\s+?)(((?:(?:[0-9a-f]{2}[:-]){5})(?:[0-9a-f]{2}))|(N A))(?:\s+)((AP.+?)|(N A))(?:\s)
我已经修改了我的正则表达式,但它仍然不匹配 MAC 地址或“NA”。 名称字段相同:匹配 AP 名称或“N A”
我的工作现状:https://regex101.com/r/sgGEzh/1
我假设我的括号不正确,但我看不到我的 (|) OR 运算符在哪里失败。我现在正在复制一些组。
我应该匹配第一个 MAC 地址,第二个 MAC 地址或字符串“N A”,最后是 AP 名称或字符串“N A”。
我应该总是每行得到三个匹配的组。
直到我尝试处理“N A”字符串。
【问题讨论】:
标签: regex python-3.x regex-lookarounds regex-group regex-greedy