Regex 用于解析带有奇怪用户代理字符串的组合日志的正则表达式
我使用以下正则表达式解析组合日志格式:-Regex 用于解析带有奇怪用户代理字符串的组合日志的正则表达式,regex,Regex,我使用以下正则表达式解析组合日志格式:- ^(?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
^(?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>[^"]*)"
^(?P\S+(?P\S+)\[(?P[^\]+)\]”(?P[A-Z]+)(?P[^“]+)?(?PHTTP/[0-9.]+)”(?P[0-9]{3})(?P[0-9]+|-)”(?P[^“]*)“{1,3}(?P[^“]*)”{1,3}”(?P[^“]*)”
它适用于大多数日志,但随着时间的推移,其中有大量的useragent have strange”,这使得正则表达式失败。我复制了下面一些有问题的user agent。如果有人能够帮助修复我的正则表达式,那么它也适用于以下奇怪的场景,我将非常高兴:-
“Mozilla/5.0(Linux;U;Android 4.1.1;tr;食人鱼业务选项卡7”“构建/JRO03C)AppleWebKit/534.30(KHTML,类似Gecko)版本/4.0 Safari/534.30 GSA/2.0.0.392829”
“Mozilla/4.0(兼容;MSIE 8.0;
Windows NT 5.1;Trident/4.0;.NET CLR 1.1.4322;.NET CLR 2.0.50727;xhcueef7$#$%
fjidf87jcnuFfFJH6@@jjfidjcu%09348%“”=“IEAK”
看起来引号是用引号转义的 如果
“
字符后面紧接着另一个”
,则应将该字符视为单个“
,以表示用户代理的值
尝试更改此选项:
"{1,3}(?P<useragent>[^"]*)"{1,3}
“{1,3}(?P[^”]*)”{1,3}
为此:
"(?P<useragent>(?:[^"]""|[^"])*)"
“(?P(?:[^]”“|[^]*)”