Python RegEx在Word之前停止

时间:2016-04-13 13:11:34

标签: python regex

我有一点RegEx,我想弄清楚:( of [A-Za-z ]+)?

我的正则表达式的上述部分将匹配以下内容:

  新墨西哥州和史密斯夫人。

我要做的是让RegEx在and之前停止。

( of [A-Za-z ]+)\sand?

上述RegEx非常接近于解决问题,但仍然匹配和。

以上匹配:

  

新墨西哥州和

我希望它输出:

  新墨西哥州

1 个答案:

答案 0 :(得分:5)

您可以使用tempered greedy token

( of (?:(?!\band\b)[A-Za-z ])+)?
     ^^^^^^^^^^^^^^^^^^^^^^^^^

请参阅regex demo

(?:(?!\band\b)[A-Za-z ])+构造匹配[A-Za-z ]字符类中定义的1 +个字符,这些字符不是整个字and

Python demo

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())