正则表达式匹配[^ a-z]或$

时间:2012-10-31 13:45:51

标签: python regex

我需要一些帮助,使用字符串正则表达式来匹配句子中的单词,以确定标点符号和行尾。我的尝试因行结束而失败。

以下示例根据需要进行评估:

>>> print bool(re.search('test[^a-z]','test!'.lower()))
True
>>> print bool(re.search('test[^a-z]','test aaa'.lower()))
True
>>> print bool(re.search('test[^a-z]','testaaa'.lower()))
False

然而,行尾案例评估False

>>> print bool(re.search('test[^a-z]','test'.lower()))
False

行尾字符$不在集合a-z中,所以我觉得这个案例也会评估True。我如何在regex中处理此问题?

1 个答案:

答案 0 :(得分:9)

您可以使用否定lookahead

'test(?![a-z])'

alternation

'test([^a-z]|$)'