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.091 ]
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
Iniciando no mundo das expressões regulares (parte 1)
Visão geral do X-Windows
Utilizando o Xterm
Configurando o scanner Epson Perfection 610 USB
Bill Gates e Linux
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
Implementando um tradutor de línguas no seu web site
Criando um sistema de banners rotativos em PHP
Comentários
Fico muito feliz por saber que temos quase 70 amigos que estão realmente interessados em expressões regulares... (o:?
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: ^(.*)
Mensagem
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: ^(.*)
Daniel, tente:
[^\.]
Ou seja, uma lista negada que exclui tudo que tiver o caractere "." (ponto).
Mensagem
Daniel, tente:
[^\.]
Ou seja, uma lista negada que exclui tudo que tiver o caractere "." (ponto).
se eu quisesse excluir tudo que for precedido de "." (ponto) e pós-cedido de qualquer coisa (tipo: .html .minhacasa .h .cas) poderia ser:
[^.*]
???
Mensagem
se eu quisesse excluir tudo que for precedido de "." (ponto) e pós-cedido de qualquer coisa (tipo: .html .minhacasa .h .cas) poderia ser:
[^.*]
???
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!
Mensagem
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!
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...)
Mensagem
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...)
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.
Mensagem
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.
sim ;)
Assunto: (.*) Post by (.*) \((.*)\)
Mensagem
sim ;)
Assunto: (.*) Post by (.*) \((.*)\)
Muito bom seu artigo, me ajudou nos estudos para a prova 101. Abraços
Mensagem
Muito bom seu artigo, me ajudou nos estudos para a prova 101. Abraços
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
Mensagem
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
Enviar