Jak wyszukiwać wyrażenia regularne na stronach internetowych za pomocą Google Chrome lub IE?


68

Jak wyszukiwać wyrażenia regularne, takie jak „foo | bar” na stronach internetowych za pomocą przeglądarki Google Chrome lub IE? Mam świadomość rozszerzenia „Wyszukiwarka wyrażeń regularnych”, ale dla mnie to nie działa. (Nic się nie dzieje, gdy uderzę w ukośnik.) Recenzje w sklepie internetowym wskazują, że jest to powszechny problem dla wielu użytkowników.


1
Nie używasz Firefoksa, ale może się okazać, że jeden z jego dodatków jest interesujący: głębsza strona internetowa deeperweb.com Nie wykonuje RE, ale pomaga w dokładniejszym wyszukiwaniu. Jeśli jesteś naprawdę zdesperowany, zawsze możesz zapisać źródło strony internetowej, a następnie przeszukać ją za pomocą narzędzia lub edytora, który obsługuje RE, ale byłoby to dość brzydkie.
Joe

może użyć NotePad ++ jako zewnętrznego edytora stron internetowych. Tam możesz wyszukać wyrażenia regularne.
Alfred

Odpowiedzi:


39

Używanie Javascript do dopasowania wyrażeń regularnych

Może chcesz wypróbować to na konsoli Chrome:

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

Po prostu otwórz konsolę , skopiuj i wklej powyżej, aby konsoli i naciśnij enter. Możesz to przetestować tutaj na tej stronie.
Można to poprawić, jeśli pasuje.

Tutaj drukujemy do konsoli indeksy dopasowania i dopasowany tekst. Tutaj staramy się dopasować tekst zawierający regu20 znaków przed (lub mniej, jeśli początek linii) i 10 znaków po (lub mniej, jeśli 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 ); }

Spróbuj również, pomaluje tło wszystkich dopasowań na czerwonej stronie , rexexp nie jest idealny, ale przynajmniej nie powinien zadzierać z tagami 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>');

Zaznacz to:

Innym sposobem na użycie tego jest javascript:protokół (ten sam kod, co powyżej):

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

Na przykład za pomocą javascript:protokołu można wstawić małe pole wyszukiwania do dowolnej strony internetowej w celu wyszukiwania wyrażeń regularnych.
Myślę, że już wiesz, że proste wyrażenie regularne może również służyć do usuwania czerwonych dopasowań ze strony.
Jeśli nadal będę go rozwijać przez kilka godzin, możemy mieć wtyczkę wyszukiwania pasującą do zakładki :)


1
Niektóre poprzednie wersje Chrome nie obsługują innerText. Zaleca się sprawdzenie, czy innerTextjest obsługiwany, a domyślnie - textContentjeśli innerTextnie jest użyteczny.
Spencer D,

Twój początkowy kod do znajdowania elementów może zawierać kod [...document.body.innerText.matchAll(p)]dla ponad 73 wersji Chrome.
Vadim Ovchinnikov

6

Wyszukiwanie wyrażeń regularnych z Google Chrome.

Proste narzędzie do wyszukiwania, które pozwala przeszukiwać stronę internetową za pomocą wyrażeń regularnych.

Funkcje w fazie rozwoju

  • przełączać znalezione wyniki
  • ulepszony interfejs użytkownika
  • przełączać między rozróżnianiem wielkości liter
  • utwórz skrót do przełączania rozszerzenia
  • Zezwól na naciśnięcie klawisza „Enter” podczas wyszukiwania (zamiast klikania przycisku wyszukiwania)

Ważne uwagi
Jest to rozszerzenie akcji strony, więc nie będzie działać od razu na stronie, którą już otworzyłeś. Przed rozpoczęciem korzystania z tego rozszerzenia zalecamy ponowne uruchomienie przeglądarki. Możesz także spróbować odświeżyć otwartą stronę.


3
Nie mam lepszej sugestii, ale to rozszerzenie nie działa zbyt dobrze. Po włączeniu AdBlock nie blokuje wszystkich reklam. Również po przeszukaniu tej strony dodawanie komentarza przestaje działać.
Dennis

3
Link wydaje się niedostępny. Czy to to samo rozszerzenie, co wyszukiwarka regex Chrome ?
Ruslan



1

W trybie Chrome Developer Tools wpisz ctrl+ shift+ F(w systemie Windows nie masz pewności co do innego systemu operacyjnego).

Istnieje opcja reg-ex do wyszukiwania. Spowoduje to przeszukanie wszystkich plików, więc będzie zawierać źródło JavaScript. Nie jestem pewien (jak) możesz ograniczyć to tylko do HTML.


1

W Chrome na macOS przytrzymaj Alt+ Command+, Iaby otworzyć Narzędzia programistyczne, wybierz kod źródłowy HTML strony (na karcie „Źródła”), przytrzymaj Command+, Faby wyszukać, i wybierz .*symbol (Regex).

Jeśli potrzebujesz przeszukiwać tylko tekst, możesz użyć pandoc do konwersji HTML na zwykły tekst:

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

A następnie użyj lessdo wyszukiwania za pomocą Regex (wyszukiwanie za pomocą /).


0

tak naprawdę nie jest to wyszukiwanie, ale uważam, że ten wyróżniający wyrażenie regularne (które gdzieś znalazłem) jest dość przydatny i działa dla wszystkich przeglądarek.

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

Wszystkie znaki UUencoded utrudniają czytanie. Znalazłem wersję multilinii na stackoverflow.com/questions/9280195/...
Alok

1
Korzystam z wyróżnienia regexp z tej strony i działa całkiem dobrze dla mnie dpatrickcaldwell.blogspot.in/2010/09//
użytkownik

Potrzebowałem normalnego (nie bookmarkletu) JS (do użycia w rozszerzeniu Chrome), a rozwiązanie z linku @buffer działało dobrze
Evgeniy Dolzhenko

Powinienem był przewinąć w dół, zanim zrobiłem to sam ... pastebin.com/VA9xvmM8
Sebi

0

Chciałbym zasugerować wtyczkę do Chrome.


Myślę, że sugerujesz to jako rozwiązanie, więc zredagowałem to. Możesz także podać link bez wyświetlania pełnego linku. Klikasz ikonę łańcucha, która jest widoczna podczas wpisywania odpowiedzi.
KAE

-1
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.