Iniciando no mundo das expressões regulares (parte 2)

Este é o segundo artigo da série que nos inicia no conceito de expressões regulares. Neste iremos nos aprofundar em listas, listas negadas, metacaracteres, âncoras, caracteres quantitativos, etc.

[ Hits: 38.098 ]

Por: rudolf ghysio schaarschmidt em 23/11/2003


Voltando para a [Bb]ene?dita lista



Você está fazendo uma ER quando se depara com o seguinte problema:

Preciso pegar a seguinte frase: "Tudo bem?"

Como você faria? Pense, se possível escreva a expressão (sei que ninguém vai fazer isso mas tudo bem ou faça a ER mesmo no vim).

Se você prestou atenção, lembrará que dentro da lista todo mundo ou quase todo mundo é normal.

Ah, assim é barbada!

Tudo bem[?]

Perfeito, mas para você não ficar criando listas de um ítem só, criaram uma maneira mais fácil de fazer isso:

utilizando a "\" (escape, é um metacaracter do tipo âncora, mas esse é importante bastante!!!!) :-)

A "\" OBRIGA o que vem depois dela ser literal

\*\.\? TUDO literal! Entendeu?
e \\ casa uma \ literal!

Já que começamos, aí vão mais uns metacaracteres do tipo âncora:

() = Grupo, torna-se um conjunto coeso.

Exemplo:

ER: (casa)?
Casa: casa (mas é opcional)

| = o famoso pipe, significa "ou" (não confunda com o pipe utilizado no comando grep).

Vamos brincar um pouquinho:

ER: sai (prá lá|daqui|a)
Casa: sai prá lá sai daqui saia

Bahm, mas dá pra fazer coisa com essas expressões regulares hein?

Sim, tudo depende de você, pode-se ampliar ou reduzir o poder da expressão regular de acordo com o seu gosto e necessidade.

Página anterior    

Páginas do artigo
   1. Finalizando pendências
   2. Lista negada
   3. E lá vem mais metacaracteres
   4. Voltando para a [Bb]ene?dita lista
Outros artigos deste autor

Ambiente X-Window, a continuação

SCO & Microsoft unidas contra o Linux?

Vamos configurar a Nividia no Kurumim

Visão geral do X-Windows

Iniciando no mundo das expressões regulares (parte 1)

Leitura recomendada

Iniciando no mundo das expressões regulares (parte 1)

Expressões regulares no PHP

Verificação da sintaxe do e-mail 1.0

Utilizando PHP para validar dados passados pelo usuário

Usando cache na classe Fast Template

  
Comentários
[1] Comentário enviado por arknoid em 24/11/2003 - 17:43h

Fico muito feliz por saber que temos quase 70 amigos que estão realmente interessados em expressões regulares... (o:?

[2] Comentário enviado por removido em 07/12/2003 - 22:18h

não to conseguindo montar a expressão regular para validar isso:
1) tenho um array com uma lista de arquvios.
2) não consigo listar os arquivos que não tem extensão!

por exemplo:

teste teste2.doc casa.xls rota.mp3 servidor arquivo

tentei validar (php) mas não consegui usei: ^(.*)

[3] Comentário enviado por fabio em 07/12/2003 - 23:02h

Daniel, tente:

[^\.]

Ou seja, uma lista negada que exclui tudo que tiver o caractere "." (ponto).

[4] Comentário enviado por removido em 08/12/2003 - 20:46h

se eu quisesse excluir tudo que for precedido de "." (ponto) e pós-cedido de qualquer coisa (tipo: .html .minhacasa .h .cas) poderia ser:

[^.*]

???

[5] Comentário enviado por arknoid em 09/12/2003 - 12:19h

nuam meu amigo...olha o que tu tah fazendo...
1º - Te aconselho a colocar a \ antes do ponto pra não ter dúvida que é um ponto literal! (isso pode te economizar futuras dores de cabeça!)

2º- pra ti excluir tudo que tiver um ponto:
-Tu usa a seguinte expressão \.
-Só não esqueçe que estou considerando que você vai aplicar isso no teu vetor de arquivos!
Isso te resultaria todos arquivos que possuem ponto!
Abraços!

[6] Comentário enviado por arknoid em 09/12/2003 - 12:22h

e para NÃO pegar o que tiver ponto:
.*[^\.].*
Qualquer coisa(pode ser um caracter,início de linha espaço qualçquer coisa!)Não pode ter um ponjto literal! e pode ser pós-cedido de qualquer coisa! (inclusive um EOL ou form feed...)

[7] Comentário enviado por tux666 em 10/02/2004 - 20:22h

Tenho que limpar esta linha:

Assunto: 123456789. Post by Fulano (200.135.132.xxx)

Onde o numero 123456789 varia,
o Nome do Individuo tb...
e o IP..

teria como? Eu precis pegar essas informacoes :) :)

[ ]'s
Obrigado.

[8] Comentário enviado por jean-mask em 12/02/2008 - 02:25h

sim ;)

Assunto: (.*) Post by (.*) \((.*)\)

[9] Comentário enviado por jucaetico em 23/07/2009 - 19:10h

Muito bom seu artigo, me ajudou nos estudos para a prova 101. Abraços

[10] Comentário enviado por fmom em 27/07/2009 - 11:55h

Galera, gostaria de saber se tem como pegar a data dos dois arquivos abaixo através de uma unica expressão regular?

ACC_CTANRAA01_2009072609.gz
ACC_COMPLEMENTO_BSANRAS01_2008011317.gz


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts