为什么当有多个匹配时,python不使用正则表达式返回结果?

时间:2013-10-10 05:40:35

标签: python regex

以下是代码:

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

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

有人可以给我一个解释吗?

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

要点:

感谢你的全部,我在你的指导下在python的文档中找到它。因为我只能选择一个最合适的答案,所以我只是把它交给那个回答最快的人。再一次。

3 个答案:

答案 0 :(得分:2)

您的意思是使用search,而不是match。仅当{1}}位于字符串的 start 时才会匹配正则表达式。

match

答案 1 :(得分:2)

pattern.match锚定在字符串的开头。

您需要pattern.search

来自documentation

  

Python提供了两种基于常规的基本操作   表达式:re.match()仅在开头检查匹配项   字符串,而re.search()检查匹配中的任何位置   string(这是Perl默认执行的操作)。

答案 2 :(得分:0)

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

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