如何使用正则表达式解析http头中的USER-AGENT字段?

时间:2013-09-26 19:43:23

标签: regex

我想解析User-Agent: HTTP标头中的一些信息。问题是我在同一个HTTP请求中得到两个User-Agent: HTTP头:

CONNECT www.facebook.com:443 HTTP/1.1
Host: www.facebook.com
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (http://iim.com/a.jph) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.
CONNECT www.facebook.com:443 HTTP/1.1
Host: www.facebook.com
Proxy-Connection: keep-alive
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/536.6 (KHTML, like Gecko) Chrome/20.0.1092.
CONNECT www.facebook.com:443 HTTP/1.1

我希望正则表达式匹配非http部分,例如 Windows NT 6.1; WOW64 即可。流量分析器软件我正在使用java正则表达式引擎。

我的尝试

User-Agent:\s+.*?\((.*?)\)

它匹配两者;我想跳过它的http部分。

1 个答案:

答案 0 :(得分:2)

使用否定前瞻来阻止http:

的匹配
User-Agent:\s+.*?\((?!http)(.*?)\)

虽然您可能希望将.*?更改为否定类:

User-Agent:[^(]+\((?!http)([^)]+)\)