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.093 ]
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
Bill Gates e Linux
Ambiente X-Window, a continuação
Vamos configurar a Nividia no Kurumim
Configurando o scanner Epson Perfection 610 USB
Visão geral do X-Windows
Leitura recomendada
Iniciando no mundo das expressões regulares (parte 1)
Verificação da sintaxe do e-mail 1.0
Expressões regulares no PHP
Servidor Web com Fedora Core 7
Instalando o Gerenciador Clínico Odontológico
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