Informática Numaboa - Tutoriais e Programação
Linguagem Perl - Expressões Regulares
Sex 21 Nov 2008 12:55 |
- Detalhes
- Categoria: Perl e CGI
- Atualização: Sexta, 21 Novembro 2008 13:56
- Autor: vovó Vicki
- Acessos: 25264
Expressões Regulares com Alternativas
Pode-se aplicar mais de uma expressão regular. Neste caso serão pesquisados pontos nos quais pelo menos uma das alternativas seja encontrada. Exemplos:
/a|b/ | # encontra 'a' ou 'b' - idêntico a /[ab]/ |
/com|sem/ | # encontra 'com' e 'descompensar', como também 'sem' e 'semântica' |
As alternativas são marcadas através do caracter |. O primeiro exemplo acima mostra uma alternativa formulada com dois caracteres individuais. Na prática, este tipo de alternativa é raro; o habitual é utilizar a notação /[ab]/, que tem o mesmo significado.
No segundo exemplo procura-se por uma sequência de caracteres com duas alternativas. O resultado da busca traz todas as coincidências com qualquer uma das duas alternativas. É claro que também se pode usar mais de duas alternativas.
Nas expressões regulares com alternativas é permitido o uso de todas as possibilidades das expressões regulares.
Precedência e uso de Parênteses nas Expressões Regulares
Os caracteres especiais contidos em expressões regulares são avaliados pelo interpretador Perl numa sequência (precedência) determinada.
- Precedência: ( ) (parênteses)
- Precedência: + * ? {#,#} (operadores de agrupamento)
- Precedência: abc ^$ \b \B (caracteres/cadeia de caracteres, início ou término de linha, início ou término de palavras)
- Precedência: | (alternativas)
Desta forma cada expressão regular tem uma interpretação única. Se quisermos que a expressão regular seja interpretada de forma diferente da precedência pré-determinada, utilizamos parênteses para forçar a sequência de interpretação desejada. Exemplos:
/a|bc|d/ | # encontra 'a' ou 'bc' ou 'd' |
/(a|b)(c|d)/ | # encontra 'ac' ou 'ad' ou 'bc' ou 'bd' |
De acordo com a regra de precedência, os caracteres (ou cadeias de caracteres) têm prioridade sobre o caractere delimitador de alternativas. Com a ajuda de parênteses pode-se forçar uma precedência diferente (analise os exemplos acima).
Expressões Parciais com Parênteses
Com a ajuda de parênteses é possível armazenar porções de expressões regulares complexas e referenciá-las posteriormente no interior da mesma expressão. Exemplo:
Neste exemplo testa-se em $Frase uma ocorrência múltipla de 'juiz'.
Para isto, coloca-se entre parênteses o que se está procurando. Além disto, está-se procurando apenas a palavra 'juiz' (e não 'juizado', etc), por isto a formulação é /bjuiz/b. Esta expressão parcial é colocada entre parênteses para que o interpretador Perl tome conhecimento da mesma. Completa-se a diretiva com .* para que, após a palavra 'juiz', possa constar qualquer coisa. Finalmente, a sintaxe \1 refencia a expressão entre parênteses definida anteriormente. Isto quer dizer: quando o interpretador Perl encontrar a palavra 'juiz', ele verifica se a palavra já foi encontrada.
Se forem colocadas duas ou mais expressões deste tipo numa expressão regular, pode-se referenciar cada uma delas através de \1, \2, \3, etc. Como resultado, passam a existir então as respectivas variáveis em Perl, ou seja, $1, $2, $3, etc.
A diretiva print $1; no exemplo acima mostra o conteúdo da variável $1, o qual é 'juiz' e nada mais, pois esta palavra ocorre mais de uma vez na frase analisada.
- << Anterior
- Próximo