以下是代码:
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的文档中找到它。因为我只能选择一个最合适的答案,所以我只是把它交给那个回答最快的人。再一次。
答案 0 :(得分:2)
您的意思是使用search
,而不是match
。仅当{1}}位于字符串的 start 时才会匹配正则表达式。
match
答案 1 :(得分:2)
pattern.match
锚定在字符串的开头。
您需要pattern.search
。
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}', '']