【发布时间】:2021-07-05 09:12:07
【问题描述】:
我无法弄清楚反向否定查找。 假设我有一个文本
qwe abc
qwe abc
abc
我想找出所有abc 后面没有出现在qwe 后面的,后面可能跟任意数量的空格。
(?<!qwe)\s*?(abc)
匹配一切。我认为它类似于“如果前面没有 qwe,则匹配任意数量的空格,后跟 abc”
我也试过了
qwe|(abs)
方法,但它对我不起作用。尽管对于我不希望匹配工作的情况,组是空的,但我真的不知道如何将它与 re.sub 函数(需要)一起使用。即使组为空,re.sub 也会替换字符串。
环境:python 3
【问题讨论】:
-
您可以使用 regex 模块而不是 re
(?<!qwe\s*)abc来执行此操作,并将\s*放在后面。否则,您可以将qwe\s*abc|(abc)与捕获组一起使用。 regex101.com/r/JNzeGi/1 -
你可以使用这个模块pypi.org/project/regex
-
这将是一个可变长度的lookbehind,不支持。否则@Thefourthbird 是对的,
(?<!qwe\s*)abc会成功。试图想出一个解决方法。 -
另一种方法是regex101.com/r/JNzeGi/1
-
这里stackoverflow.com/q/31564195/187808 @jonrsharpe 评论使用
regex模块(而不是re),所以你会有可变长度的lookbehind。然后(?<!qwe\s*)abc就可以工作了。
标签: python python-3.x regex