用于匹配字符串和尾随空格的正则表达式在Perl中工作,但不在Python中工作

时间:2014-01-14 17:49:50

标签: python regex

我正在尝试查找具有尾随空格的字符串,即'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'

它不匹配。我觉得我错过了一些明显的东西,但我无法弄清楚我做错了什么。

2 个答案:

答案 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 默认情况下。)