如何使用Google Chrome或IE搜索网页内的正则表达式?


68

如何使用Google Chrome或IE在网页上搜索“ foo | bar”之类的正则表达式?我知道“正则表达式搜索器”扩展名,但是对我来说不起作用。(当我打斜杠时什么也没发生。)网上商店的评论表明,这是许多用户的常见问题。


1
您没有使用Firefox,但是您可能会发现它的附加组件之一很有趣:更深入的网站deeperweb.com 它不提供RE,但可以帮助进行更细粒度的搜索。如果您真的很绝望,则始终可以保存网页的源代码,然后使用不支持RE的实用程序或编辑器进行搜索,但这很丑陋。
2012年

也许使用NotePad ++作为网页的外部编辑器。在这里您可以搜索正则表达式。
2012年

Answers:


39

使用Javascript匹配正则表达式

也许您想在chrome的控制台上尝试一下:

var p=/.*(regu).+?\ /gi; console.log( document.body.innerText.match(p) );

只需打开控制台,将其复制并粘贴到控制台上,然后单击即可enter。您可以在此页面上对其进行测试。
如果适合的话,可以改善这一点。

在这里,我们打印到控制台的匹配索引和匹配的文本。在这里,我们尝试匹配包含的文本,该文本包含regu,前20个字符(如果行首,则减少)和后10个字符(如果eol,则少)。

var p=/.{0,20}regu[^ \n]+[^\n]{0,10}/gi;
while (m = p.exec(document.body.innerText)) { 
    console.log( 'Index: '+m.index+' Match: '+m ); }

也尝试一下,它将红色页面上的所有匹配项的背景涂红色,rexexp并不完美,但至少不应与HTML标记混淆:

var p=/(\>{1}[^\n\<]*?)([^\n\<]{0,30}regu[^\n\<]{0,10})/gi,b=document.body;
b.innerHTML=b.innerHTML.replace(p,'$1<span style="background-color:red;">$2</span>');

为此添加书签:

使用此javascript:协议的另一种方法是通过协议(与上面相同的代码):

javascript:(function(){var p=/(\>{1}[^\n\<]*?)([^\n\<]{0,30}regu[^\n\<]{0,10})/gi,b=document.body;b.innerHTML=b.innerHTML.replace(p,'$1<span style="background-color:red;">$2</span>');})();

例如,使用javascript:协议可以在任何网页上插入一个小的搜索框以搜索正则表达式。
我认为您已经知道,简单的正则表达式也可以用于从页面中删除红色匹配项
如果我继续将其开发几个小时,我们可能会有适合书签的搜索插件:)


1
某些早期版本的chrome不支持innerText。建议检查是否innerText是支持和默认textContent,如果innerText无法使用。
Spencer D

查找元素的初始代码可以与[...document.body.innerText.matchAll(p)]73或更高版本的Chrome一起使用。
Vadim Ovchinnikov

6

通过谷歌浏览器进行正则表达式搜索

一个简单的搜索实用程序,使您可以使用正则表达式搜索网页。

开发中的功能

  • 切换找到的结果
  • 改进的用户界面
  • 在区分大小写之间切换
  • 创建切换扩展名的快捷方式
  • 搜索时允许按“ Enter”键(而不是单击搜索按钮)

重要说明
这是一个页面操作扩展,因此无法在已打开的页面上立即使用。建议您在开始使用此扩展程序之前重新启动浏览器。您也可以尝试刷新打开的页面。


3
我没有更好的建议,但是此扩展不能很好地工作。启用后,AdBlock不会阻止所有广告。另外,例如,在搜索此页面后,添加注释将停止工作。
丹尼斯

3
该链接似乎不可用。它与Chrome Regex Search相同的扩展名吗?
Ruslan



1

在Chrome开发者工具模式下,输入ctrl+ shift+ F(在Windows上,不确定其他操作系统)。

有一个用于搜索的正则表达式选项。这将搜索所有文件,因此将包括JavaScript源。我不确定(如何)可以将其限制为仅HTML。


1

在macOS上的Chrome中,按住Alt+ Command+ I打开开发人员工具,选择页面的HTML源代码(在“源”选项卡下),按住Command+ F进行搜索,然后选择.*(Regex)符号。

如果只需要搜索文本,则可以使用pandoc将HTML转换为纯文本:

$ pandoc https://superuser.com/questions/417875 -t plain -o tmp.txt

然后用于使用正则less表达式进行搜索(使用进行搜索/)。


0

并不是真正的搜索,但是我发现此regexp荧光笔(在某处找到)非常有用,并且适用于所有浏览器。

javascript:(function(){var%20count=0,%20text,%20regexp;text=prompt(%22Search%20regexp:%22,%20%22%22);if(text==null%20||%20text.length==0)return;try{regexp=new%20RegExp(%22(%22%20+%20text%20+%22)%22,%20%22i%22);}catch(er){alert(%22Unable%20to%20create%20regular%20expression%20using%20text%20'%22+text+%22'.\n\n%22+er);return;}function%20searchWithinNode(node,%20re){var%20pos,%20skip,%20spannode,%20middlebit,%20endbit,%20middleclone;skip=0;if(%20node.nodeType==3%20){pos=node.data.search(re);if(pos%3E=0){spannode=document.createElement(%22SPAN%22);spannode.style.backgroundColor=%22yellow%22;middlebit=node.splitText(pos);endbit=middlebit.splitText(RegExp.$1.length);middleclone=middlebit.cloneNode(true);spannode.appendChild(middleclone);middlebit.parentNode.replaceChild(spannode,middlebit);++count;skip=1;}}else%20if(%20node.nodeType==1%20&&%20node.childNodes%20&&%20node.tagName.toUpperCase()!=%22SCRIPT%22%20&&%20node.tagName.toUpperCase!=%22STYLE%22){for%20(var%20child=0;%20child%20%3C%20node.childNodes.length;%20++child){child=child+searchWithinNode(node.childNodes[child],%20re);}}return%20skip;}window.status=%22Searching%20for%20%22+regexp+%22...%22;searchWithinNode(document.body,%20regexp);window.status=%22Found%20%22+count+%22%20match%22+(count==1?%22%22:%22es%22)+%22%20for%20%22+regexp+%22.%22;})();

所有UUencoded字符都很难阅读,我在stackoverflow.com/questions/9280195/…上
Alok,2012年

1
我使用此网站的regexp荧光笔,对我来说效果
用户

我需要普通的(而不是书签)JS(用于Chrome扩展程序),并且@buffer链接的解决方案工作得很好
Evgeniy Dolzhenko 2014年

在我自己做之前,我应该已经向下滚动... pastebin.com/VA9xvmM8
Sebi

0

我想建议这个 Chrome插件。


我认为您建议将此作为解决方案,因此我对其进行了编辑。另外,您可以提供链接而不显示完整链接。您单击键入您的答案时可见的链链接图标。
KAE

-1
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.