Python 查找所有单词:Regex中的否定查找

Python 查找所有单词:Regex中的否定查找,python,regex,python-2.7,Python,Regex,Python 2.7,我目前正在使用Python2.7(我正在使用我的一些旧代码)。我正试图通过正则表达式获取所有单词,在正则表达式中我可以忽略带撇号的单词,比如cant和Gary的。到目前为止,我已将字符串中的所有字母改为小写,下面是我当前的正则表达式: r"(?<=\s|^)([a-z]+)(?=\s|$)" 但是,正如你在上面看到的,它没有抓住最后一个字 我知道可能有更好的选择来做这件事,但现在我真的很好奇在这种情况下如何做一个负面的回顾。但是,如果您能够解释这一点并提供自己更好的解

我目前正在使用Python2.7(我正在使用我的一些旧代码)。我正试图通过正则表达式获取所有单词,在正则表达式中我可以忽略带撇号的单词,比如
cant
Gary的
。到目前为止,我已将字符串中的所有字母改为小写,下面是我当前的正则表达式:

r"(?<=\s|^)([a-z]+)(?=\s|$)"
但是,正如你在上面看到的,它没有抓住最后一个字


我知道可能有更好的选择来做这件事,但现在我真的很好奇在这种情况下如何做一个负面的回顾。但是,如果您能够解释这一点并提供自己更好的解决方案,那将是很好的,我们将不胜感激。

在这种情况下,只需对相反的字符类
\S
使用负回溯即可(同样可以对前向进行):


r”(?有没有不使用负数的方法?我很好奇将来会不会遇到类似的问题。是的,但它看起来不整洁。如果不是太多要求,你能顺便把它也发出来吗?请注意,你也可以使用
re.I
标志将小写和大写ASCII字母与
[a-z]匹配
。此外,您也可以使用
[^\W\d\U]
,它将只匹配字母,如果您使用
re.U
标志,则也将匹配所有Unicode字母。
r"(?:\s|^)([a-z]+)(?=\s|$)"
r"(?<!\S)([a-z]+)(?!\S)"
r"(?:(?<=\s)|^)([a-z]+)(?=\s|$)"