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