Bagaimana saya bisa mencari ekspresi reguler dalam halaman web menggunakan Google Chrome atau IE?

69

Bagaimana saya bisa mencari ekspresi reguler seperti 'foo | bar' di halaman web menggunakan Google Chrome atau IE? Saya mengetahui ekstensi "Pencari Ekspresi Reguler", tetapi tidak berfungsi untuk saya. (Tidak ada yang terjadi ketika saya menekan garis miring.) Ulasan di toko web menunjukkan bahwa ini adalah masalah umum bagi banyak pengguna.

Sarah
sumber
1
Anda tidak menggunakan Firefox, tetapi Anda mungkin menemukan salah satu pengaya yang menarik: web yang lebih dalam deepweb.com Tidak melakukan RE, tetapi itu membantu pencarian berbutir halus. Jika Anda benar-benar putus asa, Anda selalu dapat menyimpan sumber halaman web dan kemudian mencarinya dengan utilitas atau editor yang mendukung RE, tetapi itu akan sangat jelek.
Joe
mungkin menggunakan NotePad ++ sebagai editor eksternal untuk halaman web. Di sana Anda dapat mencari regexps.
alfred

Jawaban:

39

Menggunakan Javascript untuk mencocokkan ekspresi reguler

Mungkin Anda ingin mencoba ini di konsol chrome:

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

Cukup buka konsol , salin dan tempel di atas untuk konsol dan tekan enter. Anda dapat mengujinya di sini di halaman ini.
Ini dapat ditingkatkan jika cocok.

Di sini kami mencetak untuk mencocokkan indeks kecocokan dan teks yang cocok. Di sini kami mencoba untuk mencocokkan teks yang berisi regu, 20 karakter sebelum (atau kurang jika mulai dari baris) dan 10 karakter setelah (atau kurang jika 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 ); }

Coba juga ini, ini akan melukis latar belakang semua pertandingan di halaman merah , rexexp tidak sempurna tetapi setidaknya tidak boleh dipusingkan dengan 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>');

Bookmark ini:

Cara lain untuk menggunakan ini adalah melalui javascript:protokol (kode yang sama seperti di atas):

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

Misalnya, dengan menggunakan javascript:protokol, seseorang dapat menyisipkan kotak pencarian kecil ke halaman web mana saja untuk mencari regexp.
Saya pikir Anda sudah tahu bahwa regexp sederhana juga dapat digunakan untuk menghapus kecocokan merah dari halaman.
Jika saya terus mengembangkan ini selama beberapa jam lagi kami mungkin memiliki plugin pencarian yang sesuai dengan bookmark :)

Sampo Sarrala
sumber
1
Beberapa versi chrome sebelumnya tidak mendukung innerText. Dianjurkan untuk memeriksa apakah innerTextdidukung dan default textContentjika innerTexttidak dapat digunakan.
Spencer D
Kode awal Anda untuk menemukan elemen bisa dengan kode [...document.body.innerText.matchAll(p)]untuk 73+ versi Chrome.
Vadim Ovchinnikov
6

Pencarian Ekspresi Reguler dari Google Chrome.

Utilitas pencarian sederhana yang memungkinkan Anda untuk mencari halaman web menggunakan ekspresi reguler.

Fitur dalam pengembangan

  • beralih melalui hasil yang ditemukan
  • UI yang ditingkatkan
  • beralih antara sensitivitas case
  • buat pintasan untuk mengaktifkan ekstensi
  • Izinkan menekan tombol "Enter" saat mencari (alih-alih mengklik tombol pencarian)

Catatan Penting
Ini adalah ekstensi tindakan halaman sehingga tidak akan langsung berfungsi pada halaman yang sudah Anda buka. Saya sarankan restart browser Anda sebelum mulai menggunakan ekstensi ini. Anda juga dapat mencoba menyegarkan halaman yang dibuka.

pengguna
sumber
3
Saya tidak memiliki saran yang lebih baik, tetapi ekstensi ini tidak berfungsi dengan baik. Saat diaktifkan, AdBlock tidak memblokir semua iklan. Juga, setelah mencari halaman ini, misalnya, add comment berhenti berfungsi.
Dennis
3
Tautan tampaknya tidak tersedia. Apakah ekstensi ini sama dengan Pencarian Regex Chrome ?
Ruslan
1

Dalam mode Alat Pengembang Chrome, ketik ctrl+ shift+ F(di Windows, tidak yakin tentang OS lain).

Ada opsi reg-ex untuk pencarian. Ini akan mencari semua file, sehingga akan menyertakan sumber JavaScript. Saya tidak yakin (bagaimana) Anda dapat membatasi hanya HTML.

Fuhrmanator
sumber
1

Di Chrome pada macOS, tahan Alt+ Command+ Iuntuk membuka Alat Pengembang, pilih kode sumber HTML untuk halaman (di bawah tab "Sumber"), tahan Command+ Funtuk mencari, dan pilih .*simbol (Regex).

Jika Anda hanya perlu mencari teks, Anda dapat menggunakan pandoc untuk mengonversi HTML menjadi teks biasa:

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

Dan kemudian gunakan lessuntuk mencari dengan Regex (search with /).

gmarmstrong
sumber
0

bukan benar-benar pencarian, tapi saya menemukan stabilo regexp ini (yang saya temukan di suatu tempat) cukup berguna, dan bekerja untuk semua 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;})();
langit-langit kucing
sumber
Semua karakter UUencoded membuatnya sulit dibaca, saya menemukan apa yang tampaknya menjadi versi multiline di stackoverflow.com/questions/9280195/…
Alok
1
Saya menggunakan stabilo regexp dari situs ini dan berfungsi cukup baik untuk saya dpatrickcaldwell.blogspot.in/2010/09/…
pengguna
Saya membutuhkan JS normal (bukan bookmarklet) (untuk digunakan dalam ekstensi Chrome), dan solusi dari tautan @buffer bekerja dengan baik
Evgeniy Dolzhenko
Saya seharusnya menggulir ke bawah sebelum saya melakukannya sendiri ... pastebin.com/VA9xvmM8
Sebi
0

Saya ingin menyarankan plugin Chrome ini .

ultraon
sumber
Saya pikir Anda menyarankan ini sebagai solusi, jadi saya mengeditnya. Anda juga dapat memberikan tautan tanpa menampilkan tautan lengkap. Anda mengklik ikon rantai tautan yang terlihat saat Anda mengetik jawaban Anda.
KAE
-1

Pergi ke javascript: void ((function () {b = document.body; b.innerHTML = b.innerHTML.replace (RegExp baru ("(> {1} [^ \ n \ <] *?) ([^ \ n \ <] {0,30} "+ prompt (" Silakan masukkan ekspresi reguler untuk mencari. ") +" [^ \ n \ <] {0,10}) "," g "), '$ 1' + prompt ('Silakan masukkan teks ke tempat sebelum kemunculan.') + '$ 2' + prompt ('Silakan masukkan teks ke tempat setelah kejadian.'))}) ()) `.

Solomon Ucko
sumber
Ini tidak berfungsi ketika saya meletakkannya di bilah URL. Akan lebih baik jika itu terjadi.
Ahmed
Itu juga menghapus format :(
Solomon Ucko
Selain itu, javascript:porsinya tidak akan disisipkan ke bilah URL di Chrome.
Solomon Ucko
1
Tetap hanya menambahkan suatu tempat DROP TABLE .. ;-))
Drakonoved