我正在尝试匹配方括号内的数据时间,我想前缀" \"将是方括号编码的方式,但不知何故它没有工作。这是我的代码:
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;。知道出了什么问题吗?
答案 0 :(得分:2)
\[(?P<time_local>\S+)\s+-0700\]
试试这个。你有0700
而不是700
。还要在正则表达式中添加\s+
而不是空格,以使其不那么脆弱。
参见演示。
答案 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