Python 正则表达式与请求日志消息不匹配



所以我测试了这个正则表达式,但是当我在python shell中尝试时,我没有得到任何匹配。

In [42]: r = re.match('([0-9a-z-]*.gif) (HTTP/1.0") (200)', '/asdf.gif HTTP/1.0" 200 0')
In [44]: print(r)
None

您错过了模式开头的正斜杠;请记住re.match始终与字符串开头的模式匹配,因此所有内容都应从一开始就匹配:

r = re.match('/([0-9a-z-]*.gif) (HTTP/1.0") (200)', '/asdf.gif HTTP/1.0" 200 0')
#             ^
r.group()
# '/asdf.gif HTTP/1.0" 200'

>也许你应该使用re.search()re.match()需要匹配字符串的开头,re.search()将扫描字符串。

最新更新