我有一些正则表达式,我想弄清楚:( of [A-Za-z ]+)?
我的正则表达式的上述部分将匹配以下内容:
of New Mexico and Mrs Smith.
我想做的是让正则表达式在 和
之前停止。
( [A-Za-z ]+)\sand?
上面的正则表达式非常接近解决问题,但它仍然匹配 and。
以上匹配:
of New Mexico and
我希望它输出:
of New Mexico
最佳答案
您可以使用 tempered greedy token :
( of (?:(?!\band\b)[A-Za-z ])+)?
^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅regex demo
(?:(?!\band\b)[A-Za-z ])+
结构匹配 [A-Za-z ]< 中定义的 1+ 个字符
不是整个单词 和
的字符类。
import re
p = re.compile(r'( of (?:(?!\band\b)[A-Za-z ])+)?')
s = " of New Mexico and Mrs Smith."
m = p.search(s)
if m:
print(m.group().strip())
关于Python 正则表达式 在单词前停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36599494/