Perl/Expressões regulares
A linguagem Perl é reconhecida por ser uma excelente ferramenta para lidar com textos, e as expressões regulares são um dos principais fatores por trás desta qualidade. As expressões regulares de Perl mostram uma eficiência e flexibilidade incomuns, pois estão diretamente integradas à linguagem.
A expressão regular mais simples é uma string:
"Hello World" =~ /World/; # matches
Dentro de um programa, esta expressão regular poderia aparecer assim:
if ($string =~ /World/) {
print "It matches\n";
} else {
print "It doesn't match\n";
}
Nós podemos usar metacaracteres, como "\d" para designar dígitos:
/\d\d:\d\d:\d\d/; # matches a hh:mm:ss time format
O uso de parênteses permite retornar trechos encontrados na pesquisa:
if ($string =~ /(..):(..):(..)/) { # parse out values
$hours = $1;
$minutes = $2;
$seconds = $3;
}
Diversas funções de Perl aceitam expressões regulares como argumentos. O exemplo a seguir mostra como dividir as colunas de uma string separada por tabs:
@columns = split(/\t/, $string);
O asterisco (*) colocado após um valor indica repetição a partir de zero. O símbolo de soma (+) indica repetição a partir de um.
...
$string = "aaa";
if (string =~ /a*b*/) { # casa
...
}
if (string =~ /a+b+/) { # nao casa
...
}
Uma expressão é case-sensitive, mas, colocando-se i no final, faz-se a procura igualando maiúsculas e minúsculas. Exemplo:
...
$string = "DSC00035.JPG"; # nome tipico de arquivo de camera digital Sony
if ($string =~ /dsc[0-9]+[.]jpg/) { # nao casa
...
}
if ($string =~ /dsc[0-9]+[,]jpg/i) { # casa
...
}
Mais informações:
- http://perldoc.perl.org/perlrequick.html
- http://perldoc.perl.org/perlretut.html
- http://perldoc.perl.org/perlre.html
Ver também
[editar | editar código]- Expressões regulares - livro