Você está na página 1de 3

Resumo de Expresses Regulares

Uso
Expresses regulares so usadas por diversos editores de texto, utilitrios e linguagens de programao para
procurar e manipular texto baseado em padres.
Outro uso a validao de formatos de texto (validao de protocolos ou formatos digitais). Por exemplo, ao
receber a entrada dum campo de formulrio duma aplicao que supe receber um endereo de e-mail, pode-se
usar uma expresso regular para garantir que o que foi recebido de fato um endereo de e-mail.
Mais um uso a implementao interna dum sistema de realce de sintaxe, como encontrado em ambientes
de desenvolvimento integrado. Expresses regulares podem ser usadas para encontrar palavras reservadas, literais e
outros tokens especficos, e para alterar a formatao do texto de acordo com o casamento feito.

Sintaxe
De 1986, a norma IEEE POSIX 1003.2 (POSIX.2) padroniza expresses regulares, e fornece duas especificaes, a
saber: o conjunto bsico (BRE) e o conjunto estendido (ERE).
BRE: expresses regulares bsicas
Na sintaxe de BRE, a maioria dos caracteres tratada como literais eles casam somente com eles prprios (por
exemplo, a casa "a"). As excees so chamadas metacaracteres ou metasequncias, definidos abaixo:
Metacaractere

Descrio
Padres individuais

Casa qualquer caractere. Algumas implementaes excluem quebra de linha e


codificao de caracteres. Nas expresses POSIX de listas de caracteres o caractere
ponto tratado como o literal. Ex.: a.c casa "abc", etc., mas [a.c] casa somente "a",
"." ou "c".

[ ]

Lista de caracteres. Casa uma ocorrncia de qualquer caractere contido na lista. Ex.:
[abc] casa "a","b" ou "c". possvel definir intervalos de caracteres: [a-z] casa
qualquer caractere de "a" a "z", e [0123456789] igual a [0-9]. Caractere "-"
tratado como literal se for o primeiro ou o ltimo da lista, ou se for escapado: [abc], [-abc] ou [a\-bc].

[^ ]

Lista negada de caracteres. Casa uma ocorrncia de qualquer caractere no contido


na lista. Ex.: [^abc] casa qualquer caractere que no seja "a", "b" ou "c". [^a-z] casa
qualquer caractere que no esteja em caixa baixa.
ncoras

Casa o comeo da cadeia de caracteres. Numa situao de mltiplas linhas, casa o


comeo das linhas. Logo percebe-se que as ncoras no casam pedaos do texto,
elas servem apenas como uma referncia.

Casa o fim da cadeia de caracteres ou a posio logo antes da quebra de linha do


fim da cadeia. Numa situao de mltiplas linhas, casa o fim das linhas.
Captura de dados

BRE: \( \)
ERE: (
\n

Grupo de captura. Marca uma subexpresso. A cadeia de caracteres que casa com
o contedo dentro dos parnteses pode ser chamada posteriormente.
Associado com o item anterior. Casa a n-sima subexpresso marcada, em que n
um dgito de 1 a 9. Essa construo teoricamente irregular e no foi adotada pela
sintaxe POSIX ERE. Algumas ferramentas permitem referenciar mais de nove grupos
de captura.

Quantificadores (ou repetidores)

BRE: \{ m,n\}

ERE: {m,n}

Casa o elemento precedente zero ou mais vezes. Ex.: ab*c casa "ac", "abc",
"abbbc", etc... [xyz]* casa "", "x", "y", "z", "zx", "zyx, "xyzzy", e assim por diante.
\(ab\)* casa "", "ab", "abab", "ababab", e assim por diante.
Casa o elemento precedente pelo menos m vezes e no mais que n vezes. Ex.:
a\{3,5} casa somente "aaa", "aaaa" e "aaaaa". Esta funcionalidade no
encontrada em algumas implementaes muito antigas. Outras opes incluem
omitir um dos campos. Ex.: a\{3,\} casa pelo menos trs "a"s. J a\{3\} casa
somente trs "a"s. b{0,} anlogo a b*, b{0,1} anlogo a b? e b{1,} idntico a
b+.

Ex.: ac?o

Ex.: ab*c

Ex.: ab+c

aco
ao
ac
abc
abbc
abbbc , etc.
abc
abbc
abbbc , etc.

Exemplos comentados
Data
^([1-9]|0[1-9]|[1,2][0-9]|3[0,1])/([1-9]|1[0,1,2])/\d{4}$
1) ^ permite apenas os caracteres dentro do intervalo, fechado por $.
2) O primeiro parntese indica trs possibilidades de data:
[1-9] : dias como 1, 2, 3, 4, at 9; ou
0[1-9]: dias como 01,02,03,04 at 09 ou
[1,2][0-9]: dias como 10,11,12,13,14,15,16,17,18,19,20,21,22,...,29
3) Aps a / delimitadora, temos duas opes para ms:
[1-9]: 1 (janeiro), 2 (fevereiro), ... 9 (setembro) ou
1[0,1,2]: 10 (outubro), 11 (novembro) ou 12 (dezembro).
4) \d{4}: indica que devem ser escritos 4 dgitos quaisquer.

Nmero decimal
^\d*[0-9](\.\d*[0-9])?$
1)
2)
3)
4)
5)

^ permite apenas os caracteres dentro do intervalo, fechado por $.


\d*[0-9]: permite n nmeros de 0 a 9.
O \. para que o . aparea, j que o ponto um caractere reservado.
\d*[0-9]: permite n nmeros de 0 a 9.
O ? indica que h zero ou uma ocorrncia do elemento precedente.

Arquivos documentos
^[a-zA-Z0-9-_\.]+\.(pdf|txt|doc|csv)$
1) ^ permite apenas os caracteres dentro do intervalo, fechado por $.

2) [a-zA-Z0-9-_\.]: lista de caracteres. Qualquer um dos caracteres de dentro dos colchetes vlido. "a-z
indica todas as letras minsculas do alfabeto, "A-Z indica todas as letras maisculas do alfabeto, 0-9 todos
os algarismos naturais, _ o smbolo de underline e \. para o ponto.
3) A cruz + indica que h uma ou mais ocorrncias do elemento predecendente.
4) Deve ter um ponto (\.) e alguma das extenses dentro dos parnteses (pdf|txt|doc|csv).
Endereo IP
^((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.) {3}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})$
1) ^ permite apenas os caracteres dentro do intervalo, fechado por $.
2) Nos primeiros parnteses, temos:
(25[0-5]: O nmero 25 precedido por 1 caractere de 6 possveis, de 0 a 5 ou (|)
2[0-4][0-9]: O nmero 2 precedido por 1 caractere de 5 possveis, de 0 a 4 que precedido por 1 caractere
de 0 a 9 ou
1[0-9]{2}: O nmero 1 precedido por 2 caracteres de 10 possveis (o trecho {2} indica que 2 o nmero
de caracteres referentes ao intervalo de 0 a 9 que deve ser digitado para atender expresso regular) ou
[0-9]{1,2}): 1 ou 2 caracteres do intervalo de 0 a 9.
\.) : insere o ponto que marca o trmino do primeiro octeto e o incio do segundo.
3) {3}: indica que se repete 3 vezes TODO o contedo dentro dos parnteses.
4) Como o 4 octeto no possui ponto final, todo o contedo do parntese copiado s que sem o \. .

Você também pode gostar