Python匹配正则表达式总是返回None

时间:2014-02-06 13:06:45

标签: python regex

我有一个python正则表达式,匹配方法总是返回None。我在pythex网站上测试过,模式似乎没问题。

Pythex example

但是当我尝试使用re模块时,结果始终为None:

import re
a = re.match(re.compile("\.aspx\?.*cp="), 'page.aspx?cpm=549&cp=168')

我做错了什么?

1 个答案:

答案 0 :(得分:7)

re.match()仅匹配字符串的 start 。请改用re.search()

re.search(r"\.aspx\?.*cp=", 'page.aspx?cpm=549&cp=168')

演示:

>>> import re
>>> re.search(r"\.aspx\?.*cp=", 'page.aspx?cpm=549&cp=168')
<_sre.SRE_Match object at 0x105d7e440>
>>> re.search(r"\.aspx\?.*cp=", 'page.aspx?cpm=549&cp=168').group(0)
'.aspx?cpm=549&cp='

请注意,任何re函数都采用模式,接受字符串并为您调用re.compile()(缓存编译结果)。如果要存储已编译的表达式以供重用,则只需使用re.compile(),此时可以在其上调用pattern.search()

pattern = re.compile(r"\.aspx\?.*cp=")
pattern.search('page.aspx?cpm=549&cp=168')