Comment rechercher des expressions régulières dans des pages Web à l'aide de Google Chrome ou IE?


69

Comment rechercher des expressions régulières telles que "foo | bar" sur des pages Web à l'aide de Google Chrome ou IE? Je connais l'extension "Regular Expression Searcher", mais cela ne fonctionne pas pour moi. (Rien ne se passe lorsque je frappe une barre oblique.) Les critiques de la boutique en ligne indiquent qu'il s'agit d'un problème courant pour de nombreux utilisateurs.


1
Vous n’utilisez pas Firefox, mais vous trouverez peut-être l’un de ses compléments intéressant: deeper web deeperweb.com. Il ne fait pas les RE, mais il permet une recherche plus fine. Si vous êtes vraiment désespéré, vous pouvez toujours enregistrer la source d'une page Web, puis la rechercher à l'aide d'un utilitaire ou d'un éditeur prenant en charge les RE, mais ce serait plutôt moche.
Joe

peut-être utiliser NotePad ++ comme éditeur externe pour les pages Web. Là, vous pouvez rechercher des expressions rationnelles.
Alfred

Réponses:


40

Utiliser Javascript pour faire correspondre les expressions régulières

Peut-être que vous voulez essayer ceci sur la console de chrome:

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

Il suffit d’ ouvrir la console , de copier et coller ci-dessus pour console et appuyer sur enter. Vous pouvez le tester ici sur cette page.
Cela peut être amélioré si cela convient.

Ici, nous imprimons sur la console les index de correspondance et le texte correspondant. Ici, nous essayons de faire correspondre le texte qui contient regu20 caractères avant (ou moins si début de ligne) et 10 caractères après (ou moins si 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 ); }

Essayez aussi ceci, il va peindre en rouge toutes les correspondances sur la page , rexexp n’est pas parfait mais au moins il ne faut pas gâcher les balises 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>');

Marquer ceci:

Une autre façon de l'utiliser consiste à utiliser le javascript:protocole (même code que ci-dessus):

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

Par exemple, en utilisant le javascript:protocole, vous pouvez insérer un petit champ de recherche dans n'importe quelle page Web pour la recherche d'expressions rationnelles.
Je pense que vous savez déjà qu'une simple expression rationnelle peut également être utilisée pour supprimer des correspondances rouges de la page.
Si je continue à développer cela pendant encore quelques heures, il est possible que nous ayons un plugin de recherche qui tienne dans les favoris :)


1
Certaines versions précédentes de chrome ne prennent pas en charge innerText. Il est recommandé de vérifier si innerTextest pris en charge et par défaut textContentsi innerTextn'est pas utilisable.
Spencer D

Votre code initial pour rechercher des éléments peut être avec le code [...document.body.innerText.matchAll(p)]de la version 73+ de Chrome.
Vadim Ovchinnikov

6

Recherche d'expressions régulières à partir de Google Chrome.

Un utilitaire de recherche simple qui vous permet de rechercher une page Web en utilisant une expression régulière.

Caractéristiques en cours de développement

  • basculer entre les résultats trouvés
  • amélioration de l'interface utilisateur
  • basculer entre la sensibilité à la casse
  • créer un raccourci pour basculer l'extension
  • Autoriser la touche "Entrée" lors de la recherche (au lieu de cliquer sur le bouton de recherche)

Remarques importantes
Il s'agit d'une extension d'action de page afin que cela ne fonctionne pas immédiatement sur la page que vous avez déjà ouverte. Je recommande de redémarrer votre navigateur avant de commencer à utiliser cette extension. Vous pouvez également essayer d'actualiser votre page ouverte.


3
Je n'ai pas de meilleure suggestion, mais cette extension ne fonctionne pas très bien. Lorsqu'il est activé, AdBlock ne bloque pas toutes les annonces. De plus, après avoir recherché cette page, par exemple, le commentaire ajouté cesse de fonctionner.
Dennis

3
Le lien semble indisponible. Est-ce la même extension que Chrome Regex Search ?
Ruslan



1

En mode Outils du développeur Chrome, tapez ctrl+ shift+ F(sous Windows, vous ne savez pas quel autre système d'exploitation).

Il existe une option reg-ex pour la recherche. Ceci recherchera tous les fichiers, donc il inclura une source JavaScript. Je ne sais pas (comment) vous pouvez le limiter au HTML.


1

Dans Chrome sous macOS, maintenez Alt+ Command+ Ipour ouvrir les outils de développement, sélectionnez le code source HTML de la page (sous l'onglet "Sources"), maintenez Command+ Fpour rechercher et sélectionnez le .*symbole (Regex).

Si vous devez rechercher uniquement du texte, vous pouvez utiliser pandoc pour convertir HTML en texte brut:

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

Et ensuite utiliser lesspour rechercher avec Regex (recherche avec /).


0

Ce n’est pas vraiment une recherche, mais j’ai trouvé ce surligneur regexp (que j’ai trouvé quelque part) très utile et qui convient à tous les navigateurs.

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

Tous les caractères UUencoded le rendent difficile à lire, j'ai trouvé ce qui semble être la version multiligne à stackoverflow.com/questions/9280195/…
Alok

1
J'utilise le surligneur regexp de ce site et cela fonctionne assez bien pour moi dpatrickcaldwell.blogspot.in/2010/09/…
utilisateur

J'avais besoin du JS normal (pas de bookmarklet) (pour une utilisation dans l'extension Chrome), et la solution de @buffer link a bien fonctionné
Evgeniy Dolzhenko le

J'aurais dû faire défiler avant de le faire moi-même ... pastebin.com/VA9xvmM8
Sebi

0

Je voudrais suggérer ce plugin Chrome.


Je pense que vous suggérez ceci comme solution, alors je l’ai édité. Vous pouvez également fournir un lien sans afficher le lien complet. Vous cliquez sur l’icône de maillon de chaîne qui est visible lorsque vous tapez votre réponse.
KAE

-1
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.