谷歌搜索的正则表达式

时间:2015-10-15 19:31:10

标签: regex-greedy

我希望从日志中捕获Google搜索字词。我有不同的用户使用不同的浏览器创建我想要提取的不同的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

1 个答案:

答案 0 :(得分:0)

您可以使用否定字符组([^&]+)来匹配q=和下一个&之间的所有内容。使问题复杂化的是,在等号前可以选择\q\=a+search+term

试试这个

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

Regex101