Не удается найти регулярное выражение - PullRequest
0 голосов
/ 24 марта 2019

Я использую логическую логику для поиска в регулярных выражениях, но она не работает. В частности, часть выражения «а не» не работает.

Пример: Gi3/3 должно совпадать, но Gi3/3(P) НЕ должно совпадать.

for line in infile:
   int = re.search(r"Gi\d\/.+", line, flags=re.IGNORECASE) or re.search(r"Eth\d\/.+", line) and not re.search(r"^Gi\d\/.+\(P\)$", line)

Когда приведенный выше код выполняется, я вижу совпадения на Gi3/3(P) и не ожидаю этого.

Ответы [ 2 ]

1 голос
/ 24 марта 2019

Вы можете иметь одно регулярное выражение с lookahead , которое перехватывает все три условия:

re.search(r"(Gi|Eth)\d/\d+(?=>\D|$)", line, flags=re.IGNORECASE)
0 голосов
/ 24 марта 2019

удалите '+' из вашего регулярного выражения

for line in infile:
int = re.search(r"Gi\d\/.", line, flags=re.IGNORECASE) or re.search(r"Eth\d\/.", line) and not re.search(r"^Gi\d\/.\(P\)$", line)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...