如何使用 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=(.+?)&amp;谢谢剃光 很抱歉再次打扰您,但是还有一个测试用例不在此处介绍。 https://www.google.co.in/webhp?sourceid=chrome-instant&amp;ion=1&amp;espv=2&amp;ie=UTF-8#q=meaning%20of%20names 在这种类型的输入中,我怎样才能获得相同的输出,因为没有 &amp; 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