所以我试图匹配某个缩写 XYZ
的所有出现,但前提是它们两边没有用括号括起来。字符串 XYZ 填充文本
、(XYZ 填充文本)
和 (填充文本 XYZ)
应全部匹配,并且字符串 ( XYZ)
不应匹配。
我能得到的最接近的是
(?<!\()XYZ(?!\))
当然,这样做的问题是,如果任何一个否定断言匹配,那么整个事情就不再匹配。我该怎么办?谢谢!
最佳答案
您可以或 (|
) 正则表达式:
(?<!\()XYZ|XYZ(?!\))
示例:
import re
lst = ['XYZ filler text', '(XYZ filler text)', '(Filler text XYZ)', '(XYZ)']
for x in lst:
print(re.search(r'(?<!\()XYZ|XYZ(?!\))', x))
输出:
<re.Match object; span=(0, 3), match='XYZ'>
<re.Match object; span=(1, 4), match='XYZ'>
<re.Match object; span=(13, 16), match='XYZ'>
None
关于python - 如何编写一个 python 正则表达式否定环视,其中两个断言都必须为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56809475/