Highlighter de Expressão Regular
26 de julho de 2010Uma expressão regular bem trabalhada e com muitos caracteres geralmente é de difícil leitura e pode parecer um bicho de sete cabeças. A dificuldade está em identificar onde fecham alguns metacaracteres, como um grupo (os parênteses), as chaves e colchetes.
Para solucionar esse problema, existem scripts para fazer highlight (destacar) os metacaracteres e facilitar a leitura da regex.
Steven Levithan, criador do RegexPal, extraiu a engine de highlight do RegexPal e deixou ela disponível, chamando-a de Javascript Regex Syntax Highlighter, para ser usada em qualquer página HTML.
Exemplos
\b[0-9]{4}(-[0-9]{2})?\b
^[A-Za-z0-9\._+-]+[@]{1}[A-Za-z0-9\.|-|_]*[.]{1}[a-z]{2,5}$
Os erros da expressão regular são estilizados na cor vermelha. Confira abaixo (parênteses e colchetes sem fechamento):
([0-9]{4}\/[a-z
Instalação
1. Fazer o download do javascript e do CSS, na página http://stevenlevithan.com/regex/syntaxhighlighter/.
2. Chamar os 2 arquivos entre as tags
e da página que você vai usar o Javascript Regex Syntax Highlighter:<script src="http://www.seusite.com/js/jsresyntaxhighlighter-min.js" type="text/javascript"></script> <link href="http://www.seusite.com/css/jsresyntaxhighlighter.css" rel="stylesheet" type="text/css" />
3. Acrescentar o script que dispara a função do javascript que faz highlight nas regex. Pode fazer como sugerido pelo autor do script, salvando o seguinte código em um arquivo .js, como regex-highlighter.js:
var regexEls = document.getElementsByClassName("regex"), len = regexEls.length, el, text, i; for (i = 0; i < len; i++) { el = regexEls[i]; text = el.textContent || el.innerText; // this is where the magic happens el.innerHTML = highlightJsReSyntax(text); }
e importá-lo, no final da página:
<script src="http://www.seusite.com/js/regex-highlighter.js" type="text/javascript"></script>4. Usar <pre style="regex">sua regex aqui</pre> onde quiser fazer o destaque da expressão.
Outra solução: ShellScript
Fiz um script utilizando as ferramentas grep e sed, geralmente nativas do bash linux. O código está disponível em http://labs.luishenrique.org/#shell. Obs.: Vou melhorar o código e disponibilizá-lo, em breve, no GitHub.
Exemplo
$ er-tester 'abc42 casa' '\b[a-z]{3}([0-9]{2})\b'

Espero ter ajudado! Comente!
Descer
Ir para o topo
Excelente dica e parabéns pelo shell script. Abraço!
@fonini, valeu mesmo pelo apoio! Abraço!