Python正则表达式匹配方括号问题

时间:2014-10-10 05:22:51

标签: python regex

我正在尝试匹配方括号内的数据时间,我想前缀" \"将是方括号编码的方式,但不知何故它没有工作。这是我的代码:

import re

line_nginx = re.compile(r"""\[(?P<time_local>\S+) -700\]""", re.IGNORECASE) 

match = line_nginx.match("[07/Oct/2014:19:43:08 -0700]")
if match:
    print("matched")
else:
    print("no match")

我得到了#34;没有匹配&#34;。知道出了什么问题吗?

2 个答案:

答案 0 :(得分:2)

\[(?P<time_local>\S+)\s+-0700\]

试试这个。你有0700而不是700。还要在正则表达式中添加\s+而不是空格,以使其不那么脆弱。

参见演示。

http://regex101.com/r/xT7yD8/5

答案 1 :(得分:2)

将正则表达式更改为,

\[(?P<time_local>\S+) -0700\]

OR

\[(?P<time_local>\S+)\s+-0700\]

逃离开始或关闭方括号不是问题。您未能在数字0之前添加7,因此您的正则表达式与输入字符串不匹配。

>>> import re
>>> line_nginx = re.compile(r"\[(?P<time_local>\S+)\s+-0700\]", re.IGNORECASE)
>>> match = line_nginx.match("[07/Oct/2014:19:43:08 -0700]")
>>> if match:
...     print("matched")
... else:
...     print("no match")
... 
matched