如何使用 JS Regex 从谷歌查询链接获取查询值? (Chrome 扩展)
Posted
技术标签:
【中文标题】如何使用 JS Regex 从谷歌查询链接获取查询值? (Chrome 扩展)【英文标题】:How to use JS Regex for getting value of query from a google query link? (Chrome Extension) 【发布时间】:2014-06-27 22:17:37 【问题描述】:我的数据包含浏览器历史记录中的一些链接。我想做的是只找出那些属于谷歌查询的链接,更具体地说,只找出那些查询中包含关键字meaning
的链接。
这是我迄今为止尝试过的。
function extractDataFromHistory()
//document.getElementById('history').innerhtml = "hi";
chrome.history.search(text: "", maxResults: 1000, function(historyItems)
var data = '';
for(var i=0; i<historyItems.length; i++)
var url = historyItems[i].url;
if(url.indexOf('google')>-1 && url.search('q='))
//data += historyItems[i].url.indexOf('google');
data += url;
document.getElementById('history').innerHTML = data;
);
我得到的样本数据:
https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CBsQFjAA&url=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fjsref_match.asp&ei=P-mtU7fgKZCzuASO6oKQAw&usg=AFQjCNHsd5ZSdXHlmUSuD1lDE1KSdvDpuw&sig2=WOxgZGk_pqs-s-rijyyxiJRQ&bvm=bv.69837884,d.c2E
https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=js%20regex%20match
https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0CB0QFjAA&url=http%3A%2F%2Fwww.w3schools.com%2Fjsref%2Fjsref_split.asp&ei=dOitU9fYGISWuATQwILADg&usg=AFQjCNGzLD-MIahz1yk3hWzuWpITkgNDRw&sig2=2oDeYwR7vSjZjUm-gkBJJg&bvm=bv.69837884,d.c2E
https://www.google.co.in/search?q=js+string+operations&oq=js+string+operations&aqs=chrome..69i57j0l5.3671j0j4&sourceid=chrome&es_sm=122&ie=UTF-8
【问题讨论】:
【参考方案1】:尝试正则表达式:
'google.+q=(.+?)&'
括号中的部分是搜索查询。
【讨论】:
几乎是我想要的。但这正是我想要的!google.+q=(.+?)&
谢谢剃光
很抱歉再次打扰您,但是还有一个测试用例不在此处介绍。 https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=meaning%20of%20names
在这种类型的输入中,我怎样才能获得相同的输出,因为没有 &
afrer q=
【参考方案2】:
尝试使用在线正则表达式测试器(我使用的是 regex101.com):
正则表达式: google.+q=(.*\+?含义\+?.*)
测试: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=the+meaning+of+life&safe=off
【讨论】:
我认为这就是您要查找的内容:q=(.*\+?meaning.*)& 括号内的内容是匹配的内容。 是的,确切地说,上面的答案说明了什么。但是两个答案不同仍然给出相同的结果?为什么? 两个答案是不同的,注意第二个答案末尾包含“&”,括号内分组的是一个组。我强烈建议在 regex101.com 上使用正则表达式,这将为您提供表达式的分解。也有其他网站可供参考。以上是关于如何使用 JS Regex 从谷歌查询链接获取查询值? (Chrome 扩展)的主要内容,如果未能解决你的问题,请参考以下文章
我们如何在颤振应用程序中从谷歌地图获取特定位置的照片[关闭]
如何通过 bigQuery 从谷歌分析中有效地获取价格和 ID
javascript 一个应用程序脚本示例,用于从谷歌电子表格中获取大查询数据。更多信息:http://wp.me/pB1lQ-19i