r1 - 06 Aug 2006 - JoenioCosta
Como tornar expressões regulares mais legíveis
Problema
Expressões regulares normalmente são difíceis de ler. Como torná-las mais legíveis?Solução
Use delimitadores diferentes; utilize o sufixo /x.Discussão
Quando precisamos lidar com padrões que incluem o caractere "/", podemos mudar o delimitador para tornar a expressão regular mais clara:
$file =~ /http:\/\/(.*)\/(.*)/; # menos legível
$file =~ m{http://(.*)/(.*)}; # mais legível!
Outra técnica interessante consiste em usar o sufixo /x, para permitir espaços e comentários dentro da expressão regular. Por exemplo:
s/<(?:[^>'"]*|".*?"|'.*?')+>//gs;
s/ < # substituir começando com "<"
(?: # parêntesis de agrupamento (non-backreffing)
[^>'"] * # 0 ou mais coisa diferentes de [>'"]
| # ou...
".*?" # uma seção entre aspas duplas
| # ou...
'.*?' # uma seção entre aspas simples
) + # tudo isso acontecendo uma ou mais vezes
> # terminando com ">"
//gsx; # substituir por nada, i.e., elimina
Embora isso não seja tão claro quanto prosa, é muito útil para descrever cada parte da expressão regular.
Uma última técnica consiste em declarar trechos da expressão regular previamente: (to-do: encontrar um exemplo melhor)
my $upperalphanum = qr{[A-Z0-9]+};
if ($var =~ /$upperalphanum/) {
# ...
}
