0

我正在尝试构建一个正则表达式来检测谷歌搜索字符串中的关键字。即来自谷歌的搜索词“惊人的汽车”的字符串是

https://www.google.pl/#hl=pl&output=search&sclient=psy-ab&q=amazing+car&oq=amazing+car&aq=f& ... etc

我尝试使用这个正则表达式来检测关键字 car:

(google\.).+(&|\?)q=(car)

但这似乎无法正常工作。我错过了什么吗?非常感谢您的建议

4

1 回答 1

1

仅当查询以“car”开头时,您的表达式才会匹配。如果您在组中使用“.*”,那么贪婪的 .+ 将使“q=”与 URL 后面的“oq=”匹配。

这可能对您有用:

(google\.).+(&|\?)q=([^&]*car)

或者,虽然更复杂,但更安全,应用此正则表达式,它将捕获唯一捕获组中的关键字:

https?://(?:[^/]+\.)?google\.[^/]+/[^?]*[?#](?:.*&)?q=([^&]*)

或者,如果您的正则表达式引擎不支持非捕获组,请使用以下命令:

https?://([^/]+\.)?google\.[^/]+/[^?]*[?#](.*&)?q=([^&]*)

并在第三组中阅读您的关键字。

于 2012-04-20T09:12:25.613 回答