A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Linguagem Perl - Expressões Regulares

Sex

21

Nov

2008


12:55

(11 votos, média 3.91 de 5) 


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.

  1. Precedência: ( ) (parênteses)
  2. Precedência: + * ? {#,#} (operadores de agrupamento)
  3. Precedência: abc ^$ \b \B (caracteres/cadeia de caracteres, início ou término de linha, início ou término de palavras)
  4. 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:

#!/usr/bin/perl $Frase = "Onde estará o juiz... o juiz Lalau?"; if($Frase =~ /(\bjuiz\b).*\1/) { print $1; }

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.

Вадим Логофет женакак сделать стрелкулобановский александр отзывыcrm интернетmfxbroker рейтингразместить объявление в интернетеbroker mfx

Informações adicionais