2013-09-26 44 views
2

我想解析來自User-Agent: HTTP標頭的一些信息。問題是,我得到在同一HTTP申請兩個User-Agent: HTTP標頭:如何使用正則表達式解析http標頭中的USER-AGENT字段?

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部分e.g 的Windows NT 6.1; WOW64。流量分析器軟件我正在使用java正則表達式引擎。

我嘗試

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

與其相配套的兩種;我想跳過它的http部分。

回答

2

使用負先行,以防止HTTP的比賽:

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

雖然你可能希望將.*?改爲否定類:

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

的'\ S +'變得不必要的,如果你這樣做''[^(] +',這確實是我的建議,而不是'。*?''''''' – funkwurm

+0

@funkwurm是的,可以剛剛完成這兩個在一個去xD – Jerry

+0

我想知道如果用戶代理有像Linux(Ubuntu)12.10'這樣的操作系統,你想在那裏捕捉到什麼他第一個')'...... – funkwurm