【发布时间】:2014-02-28 10:58:28
【问题描述】:
我使用下面的正则表达式来解析组合日志格式:-
^(?P<client>\S+) (?P<identd>\S+) (?P<userid>\S+) \[(?P<datetime>[^\]]+)\] "(?P<method>[A-Z]+) (?P<request>[^ "]+)? (?P<version>HTTP/[0-9.]+)" (?P<status>[0-9]{3}) (?P<size>[0-9]+|-) "(?P<referrer>[^"]*)" "{1,3}(?P<useragent>[^"]*)"{1,3} "(?P<cookie>[^"]*)"
它适用于大多数日志,但随着时间的推移,有很多用户代理有奇怪的“内部导致正则表达式失败。我在下面复制了一些有问题的用户代理。很高兴有人可以帮助修复我的正则表达式,以便它也适用于以下奇怪的场景:-
"Mozilla/5.0 (Linux; U; Android 4.1.1; tr-tr; PIRANHA BUSINESS TAB 7"" Build/JRO03C) AppleWebKit/534.30 (KHTML, like Gecko) 版本/4.0 Safari/534.30 GSA/2.0。 0.392829"
"Mozilla/4.0 (兼容; MSIE 8.0; 视窗 NT 5.1;三叉戟/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; xhcueef7$#$% fjidf87jcnuFfFJH6@@jjfidjcu%09348%""=""IEAK)"
【问题讨论】:
标签: regex