2015-10-15 333 views
0

我正在寻找从日志中捕获谷歌搜索条件。我有不同的用户使用不同的浏览器创建不同的URL,我想从中获得。以下是两个有效载荷示例。我的想法是在URL字符串中的=&之间。谷歌搜索正则表达式

我想捕捉:Please let this work

  • (?==).*?(?=&) - 从&匹配字work后上升到第=
  • q\\=(.+?)&将只在第一个例子中工作,错过了第二位。

有关如何完成此任务的任何想法?或者我可能做错了什么?

例一

<159>Oct 15 11:00:30 10.100.67.245 LEEF:1.0|Websense|Security|7.8.3|transaction:permitted|sev=1 cat=76 usrName=LDAP://10.10.66.137 OU=test,OU=fake,OU=fake,DC=Main,DC=com/Jane Doe src=10.10.3.50 srcPort=56725 srcBytes=687 dstBytes=68244 dst=173.194.121.51 dstPort=443 proxyStatus-code=200 serverStatus-code=200 duration=0 method=GET disposition=1026 contentType=text/html; charset\=UTF-8 reason=- policy=Super Administrator**Travel role=8 userAgent=Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko url=https://www.google.com/search?q\=Please+Let+this+work&sourceid\=ie7&rls\=com.microsoft:en-US:IE-Address&ie\=&oe\=&rlz\=&safe\=active&gws_rd\=ssl 

例二:

<159>Oct 15 11:00:30 10.100.66.245 LEEF:1.0|Websense|Security|7.8.3|transaction:permitted|sev=1 cat=76 usrName=LDAP://10.10.67.137 OU=test,OU=fake,OU=ccgh,DC=fake,DC=com/Jane Doe src=10.10.3.50 srcPort=56725 srcBytes=687 dstBytes=68244 dst=173.194.121.51 dstPort=443 proxyStatus-code=200 serverStatus-code=200 duration=0 method=GET disposition=1026 contentType=text/html; charset\=UTF-8 reason=- policy=Super Administrator**Travel role=8 userAgent=Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko url=https://www.google.com/?gws_rd=ssl#q=Please+let+this+work&safe=active 

回答

0

可以使用负字符组([^&]+)匹配q=和下&之间的一切。使问题变得复杂的是,在等号之前可以有可选的\q\=a+search+term

试试这个

q(?:\\)?=([^&]+) 

Regex101