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 para Cadeias de Caracteres

As expressões regulares, também conhecidas como regex, podem ser aplicadas a strings para

  • procurar por uma cadeia de caracteres específica
  • procurar por uma cadeia de caracteres com operadores de agrupamento (curingas - wildcards)
  • procurar por grupo de caracteres no início ou no final de uma palavra
  • procurar por grupo de caracteres no início ou no final de uma linha
( 1)/asa/# encontra 'asa' - também 'casa' ou 'casamento'
( 2)/asa?/ # encontra 'asa', 'casa', 'casamento' e também 'as' e 'asilo'
( 3)/a./ # encontra 'as' e 'ar'
( 4)/a+/# encontra 'a' e 'aa' e 'aaaaa' - quantos houverem
( 5)/a*/# encontra 'a' e 'aa' e 'aaaaa' e 'b' - nenhum ou quantos 'a' houverem
( 6)/ca.a/ # encontra 'casa' e 'caça', mas não 'cansa'
( 7)/ca.+a/# encontra 'casa', 'caça' e 'cansa'
( 8)/ca.?a/# encontra 'casa', 'caça' e 'caso'
( 9)/x{10,20}/# encontra sequências de 10 a 20 'x'
(10)/x{10,}/# encontra sequências de 10 ou mais 'x'
(11)/x.{2}y/# só encontra 'xxxy'
(12)/Clara\b/# encontra 'Clara' mas não 'Clarinha'
(13)/\bassa/# encontra 'assa' ou 'assado' mas não 'massa'
(14)/\bassa\b/# encontra 'assa' mas não 'assado' e nem 'massa'
(15)/\bassa\B/# encontra 'assado' mas não 'assa' e nem 'massa'
(16)/^Julia/# encontra 'Julia' apenas no início do contexto da pesquisa
(17)/Helena$/# encontra 'Helena' apenas no final do contexto da pesquisa
(18)/^\s*$/# encontra linhas constituídas apenas por sinais vazios ou similares
(19)/$Nome/# encontra o conteúdo da escalar $Nome
(20)/asa/s# encontra 'asa', também em várias linhas

Para pesquisar a presença de determinada sseqüência de caracteres numa expressão regular, basta incluí-la entre as duas barras da expressão, como no exemplo (1).

Nas expressões regulares existem os assim chamados operadores de agrupamento. Concatenados ou colocados em expressões mais complexas, estes operadores permitem pesquisas com marcadores de posição:

O ponto . é utilizado para indicar a posição exata de determinado caractere - veja o exemplo (3). Se você vem do mundo DOS/Windows - o ponto, numa expressão regular, corresponde ao ponto de interrogação usado, por exemplo, numa pesquisa de nomes de arquivo.

O ponto de interrogação ?, integrando uma expressão regular, procura pelo caractere precedente ou não. Veja o exemplo (2).

O sinal de adição + significa: uma ou mais ocorrências do caractere indicado antes do sinal. Veja o exemplo (4).

O asterisco * significa: nenhuma, uma ou mais ocorrências do caractere indicado antes do sinal. Veja o exemplo (5).

Quando se coloca um ponto . antes do sinal + ou *, gera-se um marcador de posição. Corresponde ao curinga * do mundo DOS/Windows. Veja os exemplos de (6) a (8).

Utiliza-se chaves contendo um ou dois números {n} para indicar a repetição do referido caractere. Veja os exemplos de (9) a (11). Também é possível colocar um ponto . antes das chaves. Neste caso, a expressão significa: tantos do caractere indicado quanto consta entre chaves. Veja o exemplo (11).

Pode-se pesquisar cadeias de caracteres que só serão encontradas se estiverem no início ou no final de uma palavra. O contrário também é possível, encontrar cadeias de caracteres só se não estiverem no início ou no final de uma palavra.

Precedidas por \b, apenas serão encontradas as cadeias de caracteres que estiverem no início de uma palavra.

Seguidas por \b, apenas serão encontradas as cadeias de caracteres que estiverem no final de uma palavra.

Precedidas por \B, serão encontradas apenas as palavras que não forem iniciadas pela cadeia de caracteres.

Seguidas por \B, serão encontradas apenas as palavras que não forem terminadas pela cadeia de caracteres.

Os exemplos correspondentes são os de (12) a (15).

Pode-se procurar sequências de caracteres que só serão localizadas se estiverem no início ou no final de um contexto de procura. Isto é particularmente interessante quando associado com linhas de arquivos de texto.

Com o acento cinrcunflexo ^ no início da expressão de procura, a sequência de caracteres só é encontrada se estiver no início de uma linha.

Com um cifrão $ no final da expressão de procura, a sequência de caracteres só é encontrada se estiver no final da linha.

Os exemplos de (16) a (18) demonstram essas posssibilidades.

As expressões de procura também podem conter variáveis. Desta forma é possível inserir dados dinâmicos nos padrões de procura. Numa CGI, por exemplo, pode-se incluir no padrão de procura uma entrada feita por um usuário num campo de formulário. Veja o exemplo (19).

Para pesquisar em mais de uma linha, anota-se um s após a barra de fechamento da expressão regular. Verifique o exemplo (20).

Informações adicionais