0

这是代码:

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

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

谁能给我一个解释?

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

概括:

感谢你们所有人,我在 python 的文档中找到了你的指示。因为我只能选择一个最合适的答案,所以我只给回答最快的那个。再次感谢。

4

3 回答 3

2

你的意思是使用search,不是matchmatch仅当它位于字符串的开头时才会匹配正则表达式。

pattern = re.compile(r'ea') 
match = pattern.search('sea ea')
if match:
    print match.group()
于 2013-10-10T05:44:14.590 回答
2

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

你需要pattern.search.

文档中:

Python 基于正则表达式提供了两种不同的原始操作:re.match()仅在字符串的开头检查匹配,而在re.search()字符串中的任何位置检查匹配(这是 Perl 默认所做的)。

于 2013-10-10T05:44:29.317 回答
0

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

>>> pattern = re.compile(r'(#{\w+})') 
>>> pattern.split('select * from records where year = #{year}')
['select * from records where year = ', '#{year}', '']
于 2013-10-10T05:47:42.003 回答