python regex:匹配空格字符或字符串结尾

时间:2013-05-13 10:21:53

标签: python regex

我希望在文本中匹配空格字符或字符串结尾。

import re


uname='abc'
assert re.findall('@%s\s*$' % uname, '@'+uname)
assert re.findall('@%s\s*$' % uname, '@'+uname+'  '+'aa')
assert not re.findall('@%s\s*$' % uname, '@'+uname+'aa')

模式不对。
如何使用python?

3 个答案:

答案 0 :(得分:14)

\s*$不正确:这匹配“零个或多个空格后跟字符串的结尾”,而不是“一个或多个空格字符串“。

的结尾

对于这种情况,我会用 (?:\s+|$)(在原始字符串中,正如其他人提到的那样)。 (?:)部分只是将子表达式分开,以便|运算符匹配正确的片段,而不是正确的片段。

答案 1 :(得分:0)

试试这个:

assert re.findall('@%s\\s*$' % uname, '@'+uname)

如果您不使用原始字符串,则必须转义\字符。

这有点令人困惑,但源于\是python解释器和re模块的元字符这一事实。

答案 2 :(得分:0)

使用raw strings

assert re.findall(r'@%s\s*$' % uname, '@'+uname)

否则,在常规字符串中使用\作为特殊字符会与在正则表达式中用作特殊字符相冲突。

但这种说法不可能失败。当然,由“@”加上变量uname的内容组成的字符串将匹配正则表达式“@”加uname加上可选(总是空的)空格,然后字符串的结尾。这是一个重言式。我怀疑你正试图检查别的东西?