我正在尝试查找具有尾随空格的字符串,即'foo'而不是'foo'。
在Perl中,我会使用:
$str = 'foo ';
print "Match\n" if ($str =~ /\s+$/) ;
当我在Python 2.6中尝试这个时,例如:
import re
str = 'foo '
if re.match('\s+$', str):
print 'Match'
它不匹配。我觉得我错过了一些明显的东西,但我无法弄清楚我做错了什么。
答案 0 :(得分:2)
使用re.search()
代替; re.match()
仅匹配字符串的 start 。引用re.match()
documentation:
如果 string 开头的零个或多个字符与正则表达式模式匹配,则返回相应的
MatchObject
实例。
强调我的。
换句话说,re.match()
相当于Perl中的m/.../
匹配运算符,而re.search()
与/.../
相同。
答案 1 :(得分:2)
因为re.match(r'\s+$', str)
相当于re.search(r'\A\s+$', str)
。请改用re.search
。
来自docs:
re.match()
仅在字符串的开头检查匹配项, 而re.search()
检查字符串中的任何位置匹配(这是 什么是 Perl 默认情况下。)