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.
Uma pergunta: No artigo anterior vimos que o - denomina
intervalo, mas se eu quiser colocar um - literal dentro da
lista, como faço? Ou se desejar colocar um ]? E ai magrão,
o que fazemos?
Por serem caracteres especiais dentro da lista, o - e o ]
tem lugares reservados para eles.
O ], para ser usado literalmente, deve ser o primeiro da lista
[].:,] entendeu? Assim a lista vai saber que o 1° ]
é literal.
Tá tudo bem e o "-"?
Simples, basta colocá-lo no final da lista. Simples assim??? Exatamente,
expressões regulares foram feitas para facilitar a sua vida e não
dificultá-la, como muitos pensam. Será que esses pensam?
Mais uma coisa antes de prosseguir... [A-z], pelo amor de DEUS
(se é que ele existe...), não me façam uma coisa dessas, pois
lembre-se, ERs seguem a tabela ASCII (me nego a explicar isso de novo!)
e para fazer intervalos entre maiúsculas e minúsculas utilize a
seguinte lista: [A-Za-z] que não tem galho.
E Lembre-se, DENTRO DA LISTA TODO MUNDO É NORMAL, tudo se TORNA
literal exceto você já sabe o que: (^,-,] de acordo com a ordem.
Agora vamos para as novidades desse artigo:
Por entrar no assunto da lista, vamos adiantar um conteúdo que não
tem nada a ver com metacaracteres representantes, mas tem tudo a ver
com a lista:
A classe POSIX
A classe posix foi desenvolvida para localidades que o alfabeto
seja acentuado, pois sabemos que a ç Ãã não ficam no intervalo
de a-z na tabela ASCII e isso os gringos demoraram para
entender, mas a solução foi muito boa. Surgiu daí a classe POSIX,
que representa TODO o ALFABETO da localidade que o SISTEMA estiver
CONFIGURADO. Então lembre-se, se você utilizar uma classe posix e o
sistema estiver em Inglês, o alfabeto não levará em conta caracteres
acentuados.
Vamos as benditas classes posix:
class POSIX
similar
significado
[:upper:]
[A-Z]
letras maiúsculas
[:lower:]
[a-z]
letras minúsculas
[:alpha:]
[A-Za-z]
maiúsculas/minúsculas
[:alnum:]
[A-Za-z0-9]
letras e números
[:digit:]
[0-9]
números
[:xdigit:]
[0-9A-Fa-f]
números hexadecimais
[:punct:]
[.,!?:...]
sinais de pontuação
[:blank:]
[ \t]
espaço e TAB
[:space:]
[ \t\n\r\f\v]
caracteres brancos
[:cntrl:]
-
caracteres de controle
[:graph:]
[^ \t\n\r\f\v]
caracteres imprimíveis
[:print:]
[^\t\n\r\f\v]
imprimíveis e o espaço
Muito boa, aposto que por essa nem você esperava!
Agora você deve estar com medo do que vem pela frente, mas se
acalme, pois a lista é o único metacaracter que é cheia de frescuras.
Ela tem quase vida independente.
[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
[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...)