我有以下两个字符串。
line1 = [16/Aug/2016:06:13:25 -0400] "GET /file/ HTTP/1.1" 302 random stuff ignore
line2 = [16/Aug/2016:06:13:25 -0400] "" 400 random stuff ignore
我试图抓住这两个部分。
"GET /file/ HTTP/1.1" 302
"" 400
基本上,两个“”之间的任何字符或“”之间的任何字符。到目前为止,我已经尝试过了;
regex_example = re.search("\".+?\" [0-9]{3}", line1)
print regex_example.group()
这将适用于line1,但会给line2带来错误。这是由于“。” 匹配任何字符,但如果不存在任何字符,则给出错误。
有没有办法在两个“”之间匹配任何字符或什么都不匹配?
使用.*?
代替.+?
。
+
表示“ 1个或更多”
*
表示“ 0或更大”
如果您想使用更高效的正则表达式,请使用否定的字符类[^"]
而不是惰性的数量词?
。您还应该使用原始字符串标志r
和\d
数字。
r'"[^"]*" \d{3}'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句