我有一点RegEx我想弄清楚: ( of [A-Za-z ]+)?
我的正则表达式的上述部分将匹配以下内容:
新墨西哥州和史密斯夫人.
我想要做的是让RegEx停止之前and.
( of [A-Za-z ]+)\sand?
上面的RegEx非常接近解决问题,但它仍然匹配和.
以上匹配:
新墨西哥州和
我希望它输出:
新墨西哥州
你可以使用一个驯化的贪婪令牌:
( of (?:(?!\band\b)[A-Za-z ])+)?
^^^^^^^^^^^^^^^^^^^^^^^^^
Run Code Online (Sandbox Code Playgroud)
请参阅正则表达式演示
该(?:(?!\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())
Run Code Online (Sandbox Code Playgroud)