Como posso procurar expressões regulares em páginas da Web usando o Google Chrome ou IE?

69

Como posso procurar expressões regulares como 'foo | bar' em páginas da Web usando o Google Chrome ou IE? Estou ciente da extensão "Pesquisador de expressões regulares", mas ela não funciona para mim. (Nada acontece quando eu clico na barra.) Os comentários na loja virtual indicam que esse é um problema comum para muitos usuários.

Sarah
fonte
11
Você não usa o Firefox, mas pode achar interessante um dos seus complementos: deep web deepweb.com Ele não executa REs, mas ajuda na pesquisa mais refinada. Se você estiver realmente desesperado, sempre poderá salvar a fonte de uma página da Web e pesquisá-la com um utilitário ou editor que suporte REs, mas isso seria muito feio.
Joe
talvez use o NotePad ++ como editor externo para páginas da web. Lá você pode procurar regexps.
Alred

Respostas:

39

Usando Javascript para corresponder a expressões regulares

Talvez você queira tentar isso no console do chrome:

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

Basta abrir o console , copiar e colar acima para o console e clicar enter. Você pode testá-lo aqui nesta página.
Isso pode ser melhorado se encaixar.

Aqui, imprimimos para consolar índices de correspondência e texto correspondente. Aqui tentamos corresponder ao texto que contém regu20 caracteres antes (ou menos se o início da linha) e 10 caracteres depois (ou menos se 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 ); }

Tente também isso: ele pintará o fundo de todas as correspondências na página em vermelho , o rexexp não é perfeito, mas pelo menos não deve mexer com as tags 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>');

Marcando isto:

Outra maneira de usar isso é através do javascript:protocolo (o mesmo código acima):

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 exemplo, usando o javascript:protocolo, é possível inserir uma pequena caixa de pesquisa em qualquer página da Web para pesquisar as expressões regulares do regexp.
Eu acho que você já sabe que o regexp simples também pode ser usado para remover correspondências vermelhas da página.
Se eu continuar desenvolvendo isso por mais algumas horas, podemos ter um plugin de pesquisa que se encaixa nos favoritos :)

Sampo Sarrala
fonte
11
Algumas versões anteriores do chrome não são compatíveis innerText. É recomendável verificar se innerTexthá suporte e o padrão para textContentse innerTextnão é utilizável.
Spencer D
Seu código inicial para encontrar elementos pode ser o código [...document.body.innerText.matchAll(p)]da versão mais de 73 do Chrome.
Vadim Ovchinnikov
6

Pesquisa de expressões regulares do Google Chrome.

Um utilitário de pesquisa simples que permite pesquisar uma página da Web usando expressão regular.

Recursos em desenvolvimento

  • alternar entre os resultados encontrados
  • UI aprimorada
  • alternar entre distinção entre maiúsculas e minúsculas
  • criar atalho para alternar a extensão
  • Permitir pressionar a tecla "Enter" ao pesquisar (em vez de clicar no botão de pesquisa)

Observações importantes
Esta é uma extensão de ação da página, para que não funcione imediatamente na página que você já abriu. Eu recomendo reiniciar o seu navegador antes de começar a usar esta extensão. Você também pode tentar atualizar sua página aberta.

do utilizador
fonte
3
Não tenho uma sugestão melhor, mas esta extensão não funciona muito bem. Enquanto ativado, o AdBlock não bloqueia todos os anúncios. Além disso, depois de pesquisar nesta página, por exemplo, o comentário adicionar para de funcionar.
Dennis
3
O link parece indisponível. É a mesma extensão que o Chrome Regex Search ?
Ruslan
1

No modo Ferramentas do desenvolvedor do Chrome, digite ctrl+ shift+ F(no Windows, não tem certeza sobre outro sistema operacional).

Há uma opção reg-ex para pesquisar. Isso pesquisará todos os arquivos e incluirá a fonte JavaScript. Não tenho certeza (como) você pode limitá-lo apenas a HTML.

Fuhrmanator
fonte
1

No Chrome no macOS, mantenha pressionada a tecla Alt+ Command+ Ipara abrir as Ferramentas do desenvolvedor, selecione o código-fonte HTML da página (na guia "Fontes"), mantenha pressionada a tecla Command+ Fpara pesquisar e selecione o .*símbolo (Regex).

Se você precisar pesquisar apenas texto, poderá usar o pandoc para converter HTML em texto sem formatação:

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

E, em seguida, use lesspara pesquisar com o Regex (pesquisar com /).

gmarmstrong
fonte
0

não é realmente uma pesquisa, mas achei esse marcador regexp (que encontrei em algum lugar) bastante útil e funciona para todos os 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 do teto
fonte
Todos os caracteres UUencoded torna difícil de ler, eu encontrei o que parece ser a versão de várias linhas na stackoverflow.com/questions/9280195/...
Alok
11
Eu uso o marca-texto regexp deste site e funciona bastante bem para mim. Dpatrickcaldwell.blogspot.in/2010/09/…
user
Eu precisava do normal (não bookmarklet) JS (para uso na extensão do Chrome), e solução de ligação @buffer funcionou bem
Evgeniy Dolzhenko
Eu deveria ter rolado para baixo antes de fazer isso sozinho ... pastebin.com/VA9xvmM8
Sebi
0

Gostaria de sugerir este plugin do Chrome.

ultraon
fonte
Eu acho que você está sugerindo isso como uma solução, então eu editei. Além disso, você pode fornecer um link sem exibir o link completo. Você clica no ícone de elo da cadeia, visível quando você digita sua resposta.
KAE 12/09
-1

Vá para javascript: void ((function () {b = document.body; b.innerHTML = b.innerHTML.replace (new RegExp ("(> {1} [^ \ n \ <] *?) (? n \ <] {0,30} "+ prompt (" Digite a expressão regular para procurar. ") +" [^ \ n \ <] {0,10}) "," g "), '$ 1' + prompt ('Digite o texto para colocar antes das ocorrências.') + '$ 2' + prompt ('Digite o texto para colocar após as ocorrências.'))}) ()) `.

Solomon Ucko
fonte
Isso não funciona quando coloco na barra de URL. Seria legal se isso acontecesse.
Ahmed
Ele também remove a formatação :(
Solomon Ucko 6/16
Além disso, a javascript:parte não será colada na barra de URL no Chrome.
Solomon Ucko
11
É Resta apenas acrescentar algum lugar DROP TABLE .. ;-))
Drakonoved