Wie kann ich mit Google Chrome oder IE nach regulären Ausdrücken auf Webseiten suchen?

68

Wie kann ich mit Google Chrome oder IE auf Webseiten nach regulären Ausdrücken wie "foo | bar" suchen? Ich kenne die Erweiterung "Regular Expression Searcher", aber sie funktioniert bei mir nicht. (Wenn ich einen Schrägstrich drücke, passiert nichts.) Die Bewertungen im Webshop weisen darauf hin, dass dies ein häufiges Problem für viele Benutzer ist.

Sarah
quelle
1
Sie verwenden Firefox nicht, aber vielleicht finden Sie eines seiner Add-Ons interessant: deeper web deeperweb.com Es führt keine REs durch, unterstützt aber eine feinere Suche. Wenn Sie wirklich verzweifelt sind, können Sie immer den Quellcode einer Webseite speichern und dann mit einem Dienstprogramm oder Editor suchen, das REs unterstützt, aber das wäre ziemlich hässlich.
Joe
Verwenden Sie möglicherweise NotePad ++ als externen Editor für Webseiten. Dort können Sie nach regulären Ausdrücken suchen.
Alfred

Antworten:

39

Verwenden Sie Javascript, um reguläre Ausdrücke zu finden

Vielleicht möchten Sie dies auf der Konsole von Chrome ausprobieren:

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

Öffne einfach die Konsole , kopiere und füge sie oben in die Konsole ein und drücke enter. Sie können es hier auf dieser Seite testen.
Dies kann verbessert werden, wenn es passt.

Hier drucken wir Übereinstimmungsindizes und übereinstimmenden Text auf die Konsole. Hier versuchen wir, einen Text zu finden regu, der 20 Zeichen vor (oder weniger, wenn der Zeilenanfang) und 10 Zeichen nach (oder weniger, wenn der Zeilenanfang) enthält.

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

Auch dies versucht, wird es Hintergrund malt alle Spiele auf Seite rot , rexexp ist nicht perfekt , aber zumindest sollte nicht verwirren mit HTML - Tags:

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>');

Lesezeichen setzen:

Eine andere Möglichkeit, dies zu verwenden, ist das javascript:Protokoll (derselbe Code wie oben):

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>');})();

Zum Beispiel kann man mit Hilfe des javascript:Protokolls ein kleines Suchfeld in jede Webseite einfügen, um reguläre Ausdrücke zu suchen.
Ich denke, dass Sie bereits wissen, dass mit einfachem regulären Ausdruck auch rote Übereinstimmungen von der Seite entfernt werden können.
Wenn ich das für ein paar Stunden weiterentwickle, haben wir möglicherweise ein Such-Plugin, das in ein Lesezeichen passt :)

Sampo Sarrala
quelle
1
Einige frühere Versionen von Chrome unterstützen dies nicht innerText. Es wird empfohlen zu prüfen, ob innerTextunterstützt wird und standardmäßig, textContentob innerTextnicht verwendbar ist.
Spencer D
Ihr ursprünglicher Code zum Suchen von Elementen kann Code [...document.body.innerText.matchAll(p)]für die Version 73+ von Chrome sein.
Vadim Ovchinnikov
6

Suche nach regulären Ausdrücken in Google Chrome.

Ein einfaches Suchdienstprogramm, mit dem Sie eine Webseite mit regulären Ausdrücken durchsuchen können.

Features in Entwicklung

  • Zwischen den gefundenen Ergebnissen wechseln
  • verbesserte Benutzeroberfläche
  • zwischen Groß- und Kleinschreibung wechseln
  • Erstellen Sie eine Verknüpfung zum Umschalten der Erweiterung
  • Zulassen, dass beim Suchen die Eingabetaste gedrückt wird (anstatt auf die Schaltfläche "Suchen" zu klicken)

Wichtige Hinweise
Dies ist eine Seitenaktionserweiterung, die auf der bereits geöffneten Seite nicht sofort funktioniert. Ich empfehle, den Browser neu zu starten, bevor Sie diese Erweiterung verwenden. Sie können auch versuchen, Ihre geöffnete Seite zu aktualisieren.

Benutzer
quelle
3
Ich habe keinen besseren Vorschlag, aber diese Erweiterung funktioniert nicht sehr gut. Wenn diese Option aktiviert ist, blockiert AdBlock nicht alle Anzeigen. Nach dem Durchsuchen dieser Seite funktioniert beispielsweise das Hinzufügen eines Kommentars nicht mehr.
Dennis
3
Der Link scheint nicht verfügbar zu sein. Ist es die gleiche Erweiterung wie Chrome Regex Search ?
Ruslan
1

In Chrome Developer Tools - Modus, geben Sie ctrl+ shift+ F(unter Windows, nicht sicher über andere OS).

Es gibt eine Reg-Ex-Option für die Suche. Dadurch werden alle Dateien durchsucht, sodass auch die JavaScript-Quelle enthalten ist. Ich bin nicht sicher, wie Sie es nur auf HTML beschränken können.

Fuhrmanator
quelle
1

Halten Sie in Chrome unter macOS die Taste Alt+ Command+ Igedrückt, um die Entwicklertools zu öffnen, wählen Sie den HTML-Quellcode für die Seite aus (auf der Registerkarte "Quellen"), halten Sie die Taste Command+ gedrückt, um Fzu suchen, und wählen Sie das .*Symbol (Regex).

Wenn Sie nur nach Text suchen müssen, können Sie mit pandoc HTML in einfachen Text konvertieren:

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

Und dann lessmit Regex suchen (suchen mit /).

gmarmstrong
quelle
0

Nicht wirklich eine Suche, aber ich fand diesen Regexp-Textmarker (den ich irgendwo fand) ziemlich nützlich und funktioniert für alle Browser.

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;})();
Decke Katze
quelle
Alle UUencoded Zeichen erschweren das Lesen, ich fand, was scheint, die mehrzeilige Version bei stackoverflow.com/questions/9280195/…
Alok
1
Ich benutze den Regexp-Textmarker von dieser Seite und er funktioniert ziemlich gut für mich. Dpatrickcaldwell.blogspot.in/2010/09/…
Benutzer
Ich brauchte das normale (nicht bookmarklet) JS (zur Verwendung in der Chrome-Erweiterung), und die Lösung von @buffer link funktionierte
einwandfrei
Ich hätte nach unten scrollen sollen, bevor ich es selbst getan habe ... pastebin.com/VA9xvmM8
Sebi
0

Ich möchte dieses Chrome-Plugin vorschlagen .

ultraon
quelle
Ich denke, Sie schlagen dies als Lösung vor, also habe ich es bearbeitet. Sie können auch einen Link angeben, ohne den vollständigen Link anzuzeigen. Sie klicken auf das Kettengliedsymbol, das angezeigt wird, wenn Sie Ihre Antwort eingeben.
Kae
-1

Gehe zu Javascript: void ((function () {b = document.body; b.innerHTML = b.innerHTML.replace (neues RegExp ("(> {1} [^ \ n \ <] *?) ([^ \ n \ <] {0,30} "+ prompt (" Bitte geben Sie den zu suchenden regulären Ausdruck ein. ") +" [^ \ n \ <] {0,10}) "," g "), '$ 1' + prompt ('Bitte geben Sie den Text ein, der vor den Vorkommnissen eingefügt werden soll.') + '$ 2' + prompt ('Bitte geben Sie den Text ein, der nach den Vorkommnissen eingefügt werden soll.')}) ()) `.

Solomon Ucko
quelle
Dies funktioniert nicht, wenn ich es in die URL-Leiste stecke. Wäre aber cool, wenn es so wäre.
Ahmed
Es entfernt auch die Formatierung :(
Solomon Ucko
Außerdem wird der javascript:Teil nicht in die URL-Leiste in Chrome eingefügt.
Solomon Ucko
1
Es bleibt nur noch irgendwo DROP TABLE hinzuzufügen .. ;-))
Drakonoved