Showing posts with label er. Show all posts
Showing posts with label er. Show all posts

Thursday, July 22, 2010

Expressões Regulares



A intenção deste post é organizar num lugar as principais e mais simples características das expressões regulares. Desta forma serve tanto para quem está começando para quem deseja consultar.


Então, vamos lá!



O que são expressões regulares?

São conjutos de caracteres e símbolos que, quando agrupados corretamente, formam uma expressão.


"É como o brinquedo LEGO, várias pecinhas diferentes, cada uma com sua característica, que juntas compõem estruturas completas e podem ser arranjadas com infinitas combinações diferentes." guia-er


Para que servem?

Expressões regulares ajudam a você definir padrões mais específicos que te ajudarão a buscar e/ou alterar em um contexto mais abrangente.


Exemplo

[rpg]ato combinará com: gato, rato e pato.


Mas expressões vão muito além disto, no dia-a-dia seu uso é muito prática para manipular diversos dados como: data/hora, endereço de email, telefones, cpf, conteudos de , praticamente qualquer coisa!


Mãos a massa!



Metacaracteres

Representantes Definição Exemplos
. ponto Um caractere qualquer Casa com qualquer coisa, inclusive com si próprio
n.o = não, nao, ...
13.15 = 13:15, 13 15, 13.15

[] lista [...] - Lista de caracteres permitidos
Casa quem quem conhece.

Dentro da lista, todo mundo é "normal".
- significa intervalo

[0123456789] = [0-9]
n[ãa]o = não, nao
a-z, A-Z pega "[\]^_" mas não pega os caracteres acentuados "aéóõç".
[^] lista negada [^...] - Lista de caracteres proibidos
Segue todas as regras de uma lista "comum"
^ não deve ser o primeiro item da lista.
A lista negava deve casar algo

[^0-9] casa tudo que não for número, inclusive espaços em branco, símbolos, letras, qualquer coisa.
Quantificadores Indicam o número de repetições permitidas para a entidade anterior exemplos
? opcional zero ou um
Torna o caracter anterior opcional
é util para procurar palavras no singular e pluar

carros? carro, carros
* asterisco zero, um ou mais A entidade anterior pode aparecer em qualquer quantidade.
6*0 = 0, 60, 660, 6660, ..., 66666666666666660, ...
+ mais um ou mais
Funcionamento idêntico ao *, a única diferença é que o + não é opcional.
A entidade anterior tem que casar pelo menos uma vez.

6+0 = 60, 660, ..., 666666666660, ...
bi+p = bip, biip, biiip, biiiip, ...
{n,m} chaves de n até m
Solução controlada para especificar exatamente quantas repetições se deseja da entidade anterior
Você pode especificar um úmero exato, um mínimo, um máximo ou uma faixa numérica.

{1,5} = de 1 a 5
{5,} = pelo menos 5
{3} = exatamente 3
Âncoras Caracteres que marcam uma posição específica na linha Exemplos
^ circunflexo
Marca início de uma linha.
^Só tem esta função no começo da linha.

^[0-9] = O primeiro item da linha deve ser um número
$ cifrão fim da linha
^$ Linha vazia
^.{10,20}$ = Linha que tenha entre 10 e 20 caracteres
\b borda início ou fim de uma palavra O conceito "palavra" engloba letras, número e sublinhado
dia = dia, diafragma, melodia, bom-dia
\bdia = dia, diafragma, bom-dia
dia\b = dia, melodia, bom-dia
\bdia\b = dia, bom-dia
Outros Exemplos
\ escape torna literal o caractere literal
\* = [*] = asterisco literal
\. = .
\\ = \
| ou um ou outro
.[php|html]
() grupo delimitador de um grupo
(ha!)+ ha!, ha!ha!, ha!ha!ha!, ...
(super|hiper)mercado
\1 retrovisor \1...\9 - Texto casado nos grupos 1...9
(quero-\1) quero-quero
([A-Za-z]+)-\1
(lenta)(mente) é \2 \1 lentamente é mente lenta



Todo conteúdo acima foi inspirado no livro e site abaixo. Quem se interessar corra atrás, compre o livre, porque vale muito a pena!
http://guia-er.sourceforge.net/