首页 > 解决方案 > 正则表达式搜索失败

问题描述

我正在为我的正则表达式搜索使用布尔逻辑,但它不起作用。具体来说,表达式的“而不是”部分不起作用。

示例: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),但我不希望出现这种情况。

标签: pythonregexpython-3.x

解决方案


您可以使用一个带有前瞻的正则表达式来捕获所有三个条件:

re.search(r"(Gi|Eth)\d/\d+(?=>\D|$)", line, flags=re.IGNORECASE)

推荐阅读