我有一点RegEx,我想弄清楚:( of [A-Za-z ]+)?
我的正则表达式的上述部分将匹配以下内容:
新墨西哥州和史密斯夫人。
我要做的是让RegEx在and
之前停止。
( of [A-Za-z ]+)\sand?
上述RegEx非常接近于解决问题,但仍然匹配和。
以上匹配:
新墨西哥州和
我希望它输出:
新墨西哥州
答案 0 :(得分:5)
您可以使用tempered greedy token:
( of (?:(?!\band\b)[A-Za-z ])+)?
^^^^^^^^^^^^^^^^^^^^^^^^^
请参阅regex demo
(?:(?!\band\b)[A-Za-z ])+
构造匹配[A-Za-z ]
字符类中定义的1 +个字符,这些字符不是整个字and
。
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())