У меня было регулярное выражение, которое правильно соответствовало подмножеству данных, которые я обрабатывал.Когда я запустил его с полным набором данных, он начал сбой.Я заметил, что некоторые значения были «NA» по сравнению с MAC-адресом или именем точки доступа, в зависимости от столбца.
Пример данных:
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
Regexp:
((?:(?:[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-адресу или «N A».То же самое для поля имени: совпадают с именем точки доступа или 'N A'
Моя работа в том виде, в каком она есть: https://regex101.com/r/sgGEzh/1
Я предполагаю, что мои скобки неверны, но я не вижугде мой (|) ИЛИ оператор не работает.Я получаю дублирование некоторых групп.
Я должен сопоставить первый MAC-адрес, второй MAC-адрес или , строку «N A» и, наконец, имя AP или строка 'N A'.
Я всегда должен получать по три совпадающие группы на строку.
Я был до тех пор, пока не попытался обработать строки 'NA'.