Come posso cercare espressioni regolari all'interno di pagine Web utilizzando Google Chrome o IE?


69

Come posso cercare espressioni regolari come "foo | bar" su pagine Web usando Google Chrome o IE? Sono a conoscenza dell'estensione "Regular Expression Searcher", ma non funziona per me. (Non succede nulla quando colpisco la barra.) Le recensioni sul web store indicano che questo è un problema comune per molti utenti.


1
Non usi Firefox, ma potresti trovare interessante uno dei suoi componenti aggiuntivi: web più approfondito deeperweb.com Non fa RE, ma aiuta la ricerca più fine. Se sei davvero disperato, potresti sempre salvare la fonte di una pagina web e quindi cercarla con un'utilità o un editor che supporti REs, ma sarebbe piuttosto brutto.
Joe,

forse usare NotePad ++ come editor esterno per pagine Web. Lì puoi cercare regexps.
Alfredo

Risposte:


40

Utilizzo di Javascript per abbinare le espressioni regolari

Forse vuoi provare questo sulla console di Chrome:

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

Basta aprire la console , copiare e incollare sopra per console e premere enter. Puoi provarlo qui in questa pagina.
Questo può essere migliorato se si adatta.

Qui stampiamo sulla console indici di corrispondenza e testo corrispondente. Qui proviamo a far corrispondere il testo che contiene regu20 caratteri prima (o meno se l'inizio della riga) e 10 caratteri dopo (o meno se 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 ); }

Prova anche questo, disegnerà lo sfondo di tutte le corrispondenze sulla pagina in rosso , rexexp non è perfetto ma almeno non dovrebbe fare confusione con i tag 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>');

Aggiungi questo ai segnalibri:

Un altro modo di utilizzare questo è tramite javascript:protocollo (stesso codice appena sopra):

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

Ad esempio, usando il javascript:protocollo si può inserire una piccola casella di ricerca in qualsiasi pagina Web per la ricerca di regexp.
Penso che tu sappia già che regexp semplice può anche essere usato per rimuovere le corrispondenze rosse dalla pagina.
Se continuo a svilupparlo per qualche ora in più, potremmo avere un plug-in di ricerca che si adatta ai segnalibri :)


1
Alcune versioni precedenti di Chrome non supportano innerText. Si consiglia di verificare se innerTextè supportato e di default textContentse innerTextnon è utilizzabile.
Spencer D,

Il codice iniziale per la ricerca di elementi può essere con il codice [...document.body.innerText.matchAll(p)]per la versione 73+ di Chrome.
Vadim Ovchinnikov

6

Ricerca di espressioni regolari da Google Chrome.

Una semplice utility di ricerca che ti permette di cercare una pagina web usando l'espressione regolare.

Funzionalità in fase di sviluppo

  • alternare i risultati trovati
  • UI migliorata
  • alternare tra maiuscole e minuscole
  • creare un collegamento per attivare / disattivare l'estensione
  • Consenti di premere il tasto "Invio" durante la ricerca (anziché fare clic sul pulsante di ricerca)

Note importanti
Questa è un'estensione dell'azione della pagina, quindi non funzionerà immediatamente sulla pagina che hai già aperto. Consiglio di riavviare il browser prima di iniziare a utilizzare questa estensione. Puoi anche provare ad aggiornare la tua pagina aperta.


3
Non ho un suggerimento migliore, ma questa estensione non funziona molto bene. Se abilitato, AdBlock non blocca tutti gli annunci. Inoltre, dopo aver cercato questa pagina, ad esempio, il commento aggiunto smette di funzionare.
Dennis,

3
Il collegamento non è disponibile. È la stessa estensione di Chrome Regex Search ?
Ruslan,



1

Nella modalità Strumenti per sviluppatori di Chrome, digita ctrl+ shift+ F(su Windows, non sei sicuro di altri sistemi operativi).

C'è un'opzione reg-ex per la ricerca. Questo cercherà tutti i file, quindi includerà la fonte JavaScript. Non sono sicuro (come) che puoi limitarlo al solo HTML.


1

In Chrome su macOS, tieni premuto Alt+ Command+ Iper aprire Strumenti per gli sviluppatori, seleziona il codice sorgente HTML per la pagina (nella scheda "Fonti"), tieni premuto Command+ Fper cercare e seleziona il .*simbolo (Regex).

Se devi cercare solo testo, puoi usare pandoc per convertire HTML in testo semplice:

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

E poi usa lessper cercare con Regex (cerca con /).


0

non proprio una ricerca, ma ho trovato questo evidenziatore regexp (che ho trovato da qualche parte) abbastanza utile e funziona per tutti i 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;})();

Tutti i caratteri UUencoded rendono difficile la lettura, ho trovato quella che sembra essere la versione multilinea su stackoverflow.com/questions/9280195/…
Alok

1
Uso l'evidenziatore regexp da questo sito e funziona abbastanza bene per me dpatrickcaldwell.blogspot.in/2010/09/…
utente

Avevo bisogno del normale (non bookmarklet) JS (per l'utilizzo nell'estensione di Chrome) e la soluzione del link @buffer funzionava bene
Evgeniy Dolzhenko,

Avrei dovuto scorrere verso il basso prima di farlo da solo ... pastebin.com/VA9xvmM8
Sebi

0

Vorrei suggerire questo plugin per Chrome.


Penso che tu stia suggerendo questo come soluzione, quindi l'ho modificato. Inoltre è possibile fornire un collegamento senza visualizzare il collegamento completo. Si fa clic sull'icona del collegamento a catena che è visibile quando si digita la risposta.
KAE,

-1
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.