2013-10-10 40 views
0

下面的代码:为什么python在有多个匹配项时使用regex返回结果?

pattern = re.compile(r'ea') 
match = pattern.match('sea ea') 
if match: 
    print match.group() 

的结果为空。但当我将代码更改为pattern = re.compile(r'sea')时,输出为“海”

任何人都可以给我一个解释吗?

p.s. 顺便说一句,我想要的是从字符串“select * from年份=#{year}”的记录中检索“#{year}”,plz给了我一个可用的正则表达式。提前致谢!

摘要:

感谢所有的U,我发现它的蟒蛇与您的指令在文档中。因为我只能选择一个最合适的答案,所以我只把它交给最快回答的人。 Thx再次。

回答

2

pattern.match被固定在字符串的开头。您需要pattern.search

documentation

python提供基于正则 表达两种不同的基本操作:仅在 字符串开头的匹配re.match()检查,而re.search()检查匹配的 任何地方字符串(这是默认情况下Perl所做的)。

2

您的意思是使用search而不是matchmatch只有在字符串的开始时才会与正则表达式匹配。

pattern = re.compile(r'ea') 
match = pattern.search('sea ea') 
if match: 
    print match.group() 
0

match只是匹配,它不搜索的东西。这样做:

>>> pattern = re.compile(r'(#{\w+})') 
>>> pattern.split('select * from records where year = #{year}') 
['select * from records where year = ', '#{year}', ''] 
相关问题