Rom*_*man 6 python regex python-3.x
我无法弄清楚反向否定查找。假设我有一个文本
qwe abc
qwe abc
abc
Run Code Online (Sandbox Code Playgroud)
我想找到所有abc没有在后面的qwe,后面可能有任意数量的空格。
(?<!qwe)\s*?(abc)
Run Code Online (Sandbox Code Playgroud)
匹配一切。我认为它类似于“匹配任意数量的空格,abc如果qwe前面没有空格”
我也试过
qwe|(abs)
Run Code Online (Sandbox Code Playgroud)
方法,但它对我不起作用。尽管对于我不希望 match 起作用的情况,组是空的,但我真的不知道如何将它与re.sub函数(需要)一起使用。即使组为空,也会re.sub替换字符串。
环境:python 3
您不需要在这里使用lookbehind。只需坚持允许动态长度断言的负前瞻:
^(?!.*qwe\s+abc).*abc
Run Code Online (Sandbox Code Playgroud)
或者用单词边界来确保qwe和abc是完整的单词。
^(?!.*qwe\s+abc).*abc
Run Code Online (Sandbox Code Playgroud)
正则表达式解释:
^: 开始(?!.*qwe\s+abc)qwe:如果我们后面跟着 1 个以上的空格,则负向预测会使匹配失败abc:如果我们在行中的任何位置都发现.*:匹配0个或多个任意字符abc: 匹配abc| 归档时间: |
|
| 查看次数: |
122 次 |
| 最近记录: |