¿Cómo puedo buscar expresiones regulares en páginas web usando Google Chrome o IE?

69

¿Cómo puedo buscar expresiones regulares como 'foo | bar' en páginas web usando Google Chrome o IE? Soy consciente de la extensión "Buscador de expresiones regulares", pero no me funciona. (No sucede nada cuando presiono la barra). Las reseñas en la tienda web indican que este es un problema común para muchos usuarios.

Sarah
fuente
1
No utiliza Firefox, pero puede encontrar interesante uno de sus complementos: web más profunda deepweb.com No hace RE , pero ayuda a búsquedas más precisas. Si está realmente desesperado, siempre puede guardar la fuente de una página web y luego buscarla con una utilidad o editor que admita RE, pero eso sería bastante feo.
Joe
quizás use NotePad ++ como editor externo para páginas web. Allí puede buscar expresiones regulares.
Alfred

Respuestas:

40

Usando Javascript para unir expresiones regulares

Quizás quieras probar esto en la consola de Chrome:

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

Simplemente abra la consola , copie y pegue arriba a la consola y presione enter. Puedes probarlo aquí en esta página.
Esto se puede mejorar si encaja.

Aquí imprimimos en la consola los índices de coincidencia y el texto coincidente. Aquí tratamos de hacer coincidir el texto que contiene regu, 20 caracteres antes (o menos si el comienzo de la línea) y 10 caracteres después (o menos 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 ); }

También intente esto, pintará el fondo de todas las coincidencias en la página roja , rexexp no es perfecto, pero al menos no debería meterse con las etiquetas 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>');

Marcar esto:

Otra forma de usar esto es a través del javascript:protocolo (el mismo código que el anterior):

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

Por ejemplo, usando el javascript:protocolo uno puede insertar un pequeño cuadro de búsqueda en cualquier página web para buscar expresiones regulares.
Creo que ya sabes que regexp simple también puede usarse para eliminar coincidencias rojas de la página.
Si sigo desarrollando esto durante unas horas más, es posible que tengamos un complemento de búsqueda que se ajuste al marcador :)

Sampo Sarrala
fuente
1
Algunas versiones anteriores de Chrome no son compatibles innerText. Se recomienda verificar si innerTextes compatible y, por defecto, textContentsi innerTextno es utilizable.
Spencer D
Su código inicial para encontrar elementos puede ser con código [...document.body.innerText.matchAll(p)]para la versión 73+ de Chrome.
Vadim Ovchinnikov
6

Búsqueda de expresiones regulares de Google Chrome.

Una sencilla herramienta de búsqueda que le permite buscar en una página web utilizando expresiones regulares.

Características en desarrollo

  • alternar entre los resultados encontrados
  • IU mejorada
  • alternar entre mayúsculas y minúsculas
  • crear acceso directo para alternar la extensión
  • Permita presionar la tecla "Enter" cuando busque (en lugar de hacer clic en el botón de búsqueda)

Notas importantes
Esta es una extensión de acción de página, por lo que no funcionará de inmediato en la página que ya ha abierto. Recomiendo reiniciar su navegador antes de comenzar a usar esta extensión. También puede intentar actualizar su página abierta.

usuario
fuente
3
No tengo una sugerencia mejor, pero esta extensión no funciona muy bien. Mientras está habilitado, AdBlock no bloquea todos los anuncios. Además, después de buscar en esta página, por ejemplo, el comentario de agregar deja de funcionar.
Dennis
3
El enlace parece no estar disponible. ¿Es la misma extensión que Chrome Regex Search ?
Ruslan
1

En el modo Chrome Developer Tools, escriba ctrl+ shift+ F(en Windows, no estoy seguro acerca de otro sistema operativo).

Hay una opción reg-ex para buscar. Esto buscará todos los archivos, por lo que incluirá la fuente de JavaScript. No estoy seguro (cómo) puede limitarlo a solo HTML.

Fuhrmanator
fuente
1

En Chrome en macOS, mantenga presionado Alt+ Command+ Ipara abrir Herramientas para desarrolladores, seleccione el código fuente HTML para la página (en la pestaña "Fuentes"), mantenga presionado Command+ Fpara buscar y seleccione el .*símbolo (Regex).

Si necesita buscar solo texto, puede usar pandoc para convertir HTML a texto sin formato:

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

Y luego use lesspara buscar con Regex (buscar con /).

gmarmstrong
fuente
0

No es realmente una búsqueda, pero encontré este resaltador regexp (que encontré en algún lugar) bastante útil, y funciona para todos los navegadores.

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;})();
gato de techo
fuente
Todos los caracteres codificados por UU hacen que sea difícil de leer, encontré lo que parece ser la versión multilínea en stackoverflow.com/questions/9280195/…
Alok
1
Uso el resaltador regexp de este sitio y me funciona bastante bien dpatrickcaldwell.blogspot.in/2010/09/…
usuario
Necesitaba el JS normal (no bookmarklet) (para usar en la extensión de Chrome), y la solución del enlace @buffer funcionó bien
Evgeniy Dolzhenko
Debería haberme desplazado hacia abajo antes de hacerlo yo mismo ... pastebin.com/VA9xvmM8
Sebi
0

Me gustaría sugerir este complemento de Chrome.

ultraon
fuente
Creo que estás sugiriendo esto como una solución, así que lo edité. También puede proporcionar un enlace sin mostrar el enlace completo. Hace clic en el ícono de enlace de cadena que está visible cuando escribe su respuesta.
KAE
-1

Vaya a javascript: void ((function () {b = document.body; b.innerHTML = b.innerHTML.replace (new RegExp ("(> {1} [^ \ n \ <] *?) ([^ \ n \ <] {0,30} "+ prompt (" Ingrese la expresión regular para buscar. ") +" [^ \ n \ <] {0,10}) "," g "), '$ 1' + prompt ('Ingrese el texto para colocar antes de las ocurrencias.') + '$ 2' + prompt ('Ingrese el texto para colocar después de las ocurrencias.'))}) ()) `.

Solomon Ucko
fuente
Esto no funciona cuando lo pongo en la barra de URL. Sería genial si lo hiciera.
Ahmed
También elimina el formato :(
Solomon Ucko
Además, la javascript:parte no se pegará en la barra de URL en Chrome.
Solomon Ucko
1
Solo queda agregar en algún lugar DROP TABLE .. ;-))
Drakonoved