我有以下场景:

1) car on the right shoulder
2) car on the left shoulder
3) car on the shoulder

当左右不存在时,我想匹配“肩”。所以只有3)返回“肩膀”
re.compile(r'(?<!right|right\s*)shoulder')
sre_constants.error: look-behind requires fixed-width pattern

好像我不能用\s*和“”
我怎么解决这个问题。
事先谢谢!

最佳答案

regexmodule:variable width lookback
除了answer by HamZa,对于python中任何复杂的regex,我建议使用杰出的regex module by Matthew Barnett。它支持无限的looknehind,这是少数几个这样做的引擎之一,以及.NET和JGSoft。
这允许您执行以下操作:

import regex
if regex.search("(?<!right |left )shoulder", "left shoulder"):
    print("It matches!")
else:
    print("Nah... No match.")

如果您愿意,也可以使用\s+
输出:
It matches!

关于python - Python中的可变宽度Lookbehind问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24987403/

10-12 18:35