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



我试图在方括号内匹配数据时间,我认为前缀"\"将是对方括号进行编码的方法,但不知何故,它不起作用。这是我的代码:

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")

我得到了"没有对手"。知道出了什么问题吗?

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

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

请参阅演示。

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

将正则表达式更改为,

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

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

这不是转义起始方括号或结束方括号的问题。未能在数字7之前添加0,因此正则表达式与输入字符串不匹配。

>>> 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

最新更新