Google Chrome veya IE’yi kullanarak web sayfalarındaki normal ifadeleri nasıl arayabilirim?


68

Google Chrome veya IE kullanarak web sayfalarında 'foo | bar' gibi normal ifadeleri nasıl arayabilirim? "Normal İfade Arama Aracı" uzantısının farkındayım, ancak bu benim için çalışmıyor. (Eğik çizgiye çarptığımda hiçbir şey olmuyor.) Web mağazasındaki incelemeler, bunun birçok kullanıcı için ortak bir sorun olduğunu gösteriyor.


1
Firefox kullanmıyorsunuz, ancak eklentilerinden birini ilginç bulabilirsiniz: daha derin web deeperweb.com RE'leri yapmıyor, ancak daha iyi ayarlanmış aramalara yardımcı oluyor. Gerçekten çaresizseniz, bir web sayfasının kaynağını her zaman kaydedebilir ve ardından RE'leri destekleyen bir yardımcı program veya düzenleyicide arayabilirsiniz, ancak bu oldukça çirkin olur.
Joe,

belki NotePad ++ 'ı web sayfaları için harici editör olarak kullanabilirsiniz. Orada regexps için arama yapabilirsiniz.
alfred

Yanıtlar:


39

Normal ifadeleri eşleştirmek için Javascript kullanma

Belki bunu krom konsolunda denemek istersin:

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

Sadece konsolu açın , kopyalayıp yapıştırın ve konsola yerleştirin enter. Burada bu sayfada test edebilirsiniz.
Bu uyuyorsa iyileştirilebilir.

Burada konsol eşleşme indekslerini ve eşleşen metni yazdırıyoruz. Burada regu, önce 20 karakter (veya satır başlangıcında daha az) ve 10 karakter sonra (veya eol ise daha az) içeren metni eşleştirmeye çalışırız .

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

Ayrıca şunu da deneyin, bu olacak arka plan boyamak sayfa üzerindeki tüm maçları kırmızı , rexexp mükemmel değil ama en azından gerektiği HTML etiketleri ile dalga geçme:

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

Bunu işaretleme:

Bunu kullanmanın başka bir yolu javascript:protokolden (sadece yukarıdaki ile aynı kod):

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

Örneğin, javascript:protokol kullanarak bir regexp aramak için herhangi bir web sayfasına küçük bir arama kutusu ekleyebilirsiniz.
Basit regexp'in sayfadaki kırmızı eşleşmeleri kaldırmak için de kullanılabileceğini zaten bildiğinizi düşünüyorum .
Bunu birkaç saat daha geliştirmeye devam edersem, yer imine uygun bir arama eklentisi olabilir :)


1
Önceki krom sürümleri desteklemiyor innerText. Kontrol edilmesi tavsiye edilir innerTextdesteklenen ve varsayılan etmektir textContenteğer innerTextkullanılamaz.
Spencer D

Öğeleri bulmak için ilk kodunuz [...document.body.innerText.matchAll(p)], Chrome'un 73+ sürümü için kodla olabilir .
Vadim Ovchinnikov

6

Google Chrome'dan Düzenli İfade Arama .

Normal ifadeyi kullanarak bir web sayfasını aramanıza izin veren basit bir arama aracı.

Geliştirilmekte olan özellikler

  • bulunan sonuçlar arasında geçiş yap
  • geliştirilmiş kullanıcı arayüzü
  • büyük / küçük harf duyarlılığı arasında geçiş yapmak
  • uzantıyı değiştirmek için kısayol oluştur
  • Arama yaparken "Enter" tuşuna basmanıza izin verin (arama butonuna tıklamak yerine)

Önemli Notlar
Bu, bir sayfa eylem uzantısıdır, bu nedenle zaten açmış olduğunuz sayfada hemen çalışmayacaktır. Bu uzantıyı kullanmaya başlamadan önce tarayıcınızı yeniden başlatmanızı öneririz. Açılan sayfanızı yenilemeyi de deneyebilirsiniz.


3
Daha iyi bir önerim yok, ancak bu uzantı pek iyi çalışmıyor. Etkinleştirildiğinde, AdBlock tüm reklamları engellemez. Ayrıca, bu sayfada arama yaptıktan sonra, örneğin yorum ekle çalışmayı durdurur.
Dennis,

3
Bağlantı kullanılamıyor görünüyor. Chrome Regex Search ile aynı uzantı mıdır ?
Ruslan



1

Chrome Geliştirici Araçları modunda, ctrl+ shift+ yazın F(Windows'ta, diğer işletim sistemlerinden emin değil).

Arama için bir reg-ex seçeneği var. Bu, tüm dosyaları arayacak, böylece JavaScript kaynağını içerecektir. Emin değilim (nasıl) sadece HTML ile sınırlandırabilirsiniz.


1

MacOS'taki Chrome'da, Geliştirici Araçları'nı açmak için Alt+ + Commandtuşlarına Ibasın, sayfanın HTML kaynak kodunu seçin ("Kaynaklar" sekmesi altında), aramak için Command+ tuşunu basılı tutun Fve .*(Regex) simgesini seçin.

Yalnızca metin aramanız gerekirse, HTML'yi düz metne dönüştürmek için pandoc kullanabilirsiniz :

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

Ve sonra lessRegex ile aramak için kullanın (ile arayın /).


0

gerçekten bir arama değil, (bu bir yerde buldum) bu regexp vurgulayıcı oldukça yararlı buldum ve tüm tarayıcılar için çalışıyor.

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

Tüm UUencoded karakterleri okumayı zorlaştırıyor, stackoverflow.com/questions/9280195/…
12'de Alok

1
Bu siteden regexp vurgulayıcısını kullanıyorum ve benim için oldukça iyi çalışıyor dpatrickcaldwell.blogspot.in/2010/09/…
kullanıcı

Normal (yer imi olmayan) JS'ye (Chrome uzantısında kullanım için) ihtiyacım vardı ve @ arabellek bağlantısından gelen çözüm iyi çalıştı
Evgeniy Dolzhenko

Kendim yapmadan önce aşağı kaydırmalıydım ... pastebin.com/VA9xvmM8
Sebi

0

Bu Chrome eklentisini önermek istiyorum .


Bence bunu bir çözüm olarak öneriyorsun, ben de düzenlemiştim. Ayrıca tam bağlantıyı göstermeden bir bağlantı sağlayabilirsiniz. Cevabınızı yazarken görünen zincir bağlantı simgesine tıklayın.
KAE

-1
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.