Você está na página 1de 15

Vinde, cantemos ao Senhor, com jbilo, celebremos o Rochedo da nossa salvao.

(Salmos 95:1)
0
Entendendo as Expresses Regulares
Publicado em 12 de novembro de 2007 por Rafael Jaques
Prefcio
E o assunto hoje Expresses Regulares!
Com algumas vasculhadas pela internet podemos encontrar inmeras denies para expresses regulares,
porm, vou car com a da Wikipdia de lingua portuguesa.
Uma expresso regular, na Informtica, dene um padro a ser usado para procurar ou substituir
palavras ou grupos de palavras. um meio preciso de se fazer buscas de determinadas pores de
texto.
Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expresso regular
buscar por um padro rr, obter as palavras carro e terra.
Existem diferentes formatos para denir-se expresses regulares, porm com algumas noes
gerais possvel entender boa parte das expresses.
Fonte: Wikipdia Expresso Regular
Conceito
As Expresses Regulares (ER, Ereg ou RegEx para os mais ntimos), ento, so um mtodo rpido e simples
de manipulao e combinao avanada de strings.
Vamos partir do princpio! Uma expresso regular essencialmente um padro. com base nesse padro que a
expresso em questo ser avaliada. Primeiro vamos aprender a sintaxe das expresses para depois aprender
como faz-las funcionar
Operador ^
Este o primeiro operador que vamos aprender. O ^ indica que a expresso deve iniciar com a string dada.
Esta sintaxe ir denir que a string dada dever comear com era. No caso, era uma vez seria uma string
13 Like Send
! "#$%
concordante. Porm, se voc tentar Ele era triste, no obter sucesso.
Operador $
J que temos o operador para denir o comeo, temos que ter um para denir o nal tambm! Com $ ns
denimos a string que dever conincidir com o nal.
Esta sintaxe ir denir que a string dada dever terminar com m. Tentando validar a string E nunca ter m
obteremos sucesso, o que no acontecer com a string O m est prximo.
Caracteres em Branco e Caracteres de Escape
Assim como no PHP, em expresses regulares ns temos tambm que nos utilizar de caracteres de escape, a
saber: barra invertida ().
Segue, ento, a lista com os caracteres de espao em branco e alguns caracteres que necessitam de escape.
e com alguma garimpada pela rede voc consegue encontrar uma lista mais completa!
Classes de Caracteres
Classes de caracteres so uma espcie de grupo que contm todas as ocorrncias que devero (ou no
devero) constar em uma expresso
Por exemplo Para permitir apenas letras vogais, usaramos:
Ento com este cdigo teramos um padro que s permitir que apenas vogais estejam na string dada.
Vamos agora aprender intervalo de caracteres
Bom Tudo muito legal, muito simples Mas isto serve apenas para combinao de UM caractere.
Neste caso teramos uma expresso de apenas dois caracteres em que o primeiro tem necessariamente que ser
uma letra minscula e o segundo ser um nmero.
Agora vamos aprender outra funo para o operador ^! Fora de uma classe de caracteres, ele serve para
! &'()
!
*
+
,
-
.
/
0
12 4 5%$%62#$ 7# 2%89:%;<=
1> 4 ?=@% :'>A%
1& 4 B@%>;= 7# CDE'>%
1$ 4 F#2=$>= 7# 6%$$=

1G 4 H9%:I9#$ 6%$%62#$#
11 4 J(% 8%$$% '>@#$2'7% :'2#$%:
1K 4 J( AL&#> :'2#$%:
! MB%N#O'P=J9Q
!
*
+
,
-
M%KRQ K H9%:I9#$ :#2$% ('>ST69:%
MBKUQ K H9%:I9#$ :#2$% (%'ST69:%
M%KRBKUQ K H9%:I9#$ :#2$% (%'ST69:% =9 ('>ST69:%
MVKWQ K H9%:I9#$ >S(#$=
MVKWGKQ K H9%:I9#$ >S(#$=X C=>2= =9 T'>%: 7# T982$%;<=
! "M%KRQMVKWQ)
demonstrar o que deve haver no incio, porm dentro, ele serve para mostrar o que no deve ocorrer.
Aqui ns denimos que a expresso deve comear com um caractere que no seja um nmero e seja
imediatamente seguido por um caractere que ser um nmero!
Classes de Caracteres Pr-definidas
Para evitar chateao, foram criadas as classes de caracteres pr-denidas que j vm junto com o
interpretador de ER que voc estiver utilizando (lembrando que esto presentes apenas no mtodo POSIX).
Ocorrncias Mltiplas
Agora vamos pra parte em que realmente comea a fazer sentido usar-se expresses regulares.
At aqui Tudo tranquilo? Ento vamos em frente!
H outros modos de representar a repetio de caracteres!
Se at aqui foi tudo tranqilo, estamos muito bem! :)
Vamos ento para o tpico nal de expresses regulares
Alternao e Parnteses
A alternao se baseia no caractere de pipe, o famoso |. Ele bem parecido com o operador lgico OR. Por
exemplo
Para caracteres simples com certeza mais conveniente utilizar as classes. A alternao basicamente til para
utilizar alternncia de palavras.
Esta expresso s ir retornar verdadeiro se a string dada for Joo OU Maria OU Jos.
Agora vamos aos parnteses. Eles tem uma funo muito importante.
Caso voc utilize
! "M"VKWQMVKWQ)
!
*
+
,
-
.
/
0
MMY%:CA%YQQ ZZ H9%:I9#$ :#2$% [%:&%8\2'6=]
MMY7'E'2YQQ ZZ H9%:I9#$ >S(#$= [7LE'2=]
MMY%:>9(YQQ ZZ H9%:I9#$ :#2$% =9 >S(#$= [%:&%>9(\$'6=]
MMYTC%6#YQQ ZZ H9%:I9#$ 6%$%62#$# 7# #TC%;=
MMY9CC#$YQQ ZZ H9%:I9#$ :#2$% (%L9T69:%
MMY:=^#$YQQ ZZ H9%:I9#$ :#2$% ('>ST69:%
MMYC9>62YQQ ZZ H9%:I9#$ 6%$%62#$# 7# C=>29%;<=
MMY_7'E'2YQQ ZZ H9%:I9#$ 7LE'2= A#_%7#6'(%: [NI9'@%:#>2# %Y MVKW%K&BK`Q]
!
*
+
,
"MMY%:CA%YQQa+b) ZZ H9%:I9#$ C%:%@$% 7# 2$cT :#2$%T
"%a,b) ZZ de &#6A% 6=( % #_C$#TT<= f%%%%f
"%a*X,b) ZZ `#6A% 6=( f%%fX f%%%f # f%%%%f
"%a*Xb) ZZ `#6A% 6=( f%%fX f%%%fX f%%%%fX f%%%%%f # %TT'( C=$ 7'%>2#
!
*
+
g K J(% =6=$$c>6'% =9 >#>A9(% [NI9'@%:# % aVX!b]
h K ?#>A9(% =6=$$c>6'%X 9(% =6=$$c>6'%X 79%T =6=$$c>6'%T # C=$ %L @%' [NI9'@%:# % aVXb]
i K J(% =9 (%'T =6=$$c>6'%T [NI9'@%:# % a!Xb]
! $jT \ #I9'@%:#>2# % M$TQ
! k=<=jl%$'%jk=T\
Porm com os parnteses, temos um jeito mais interessante de interar com palavras repetidas.
Quando utilizados em conjunto, obtemos bastante exibilidade para nossas expresses regulares.
E m de papo!
Utilizando expresses regulares no PHP
Agora que j aprendemos essa porrada de regras, temos que saber como aplic-las! (Lembrando que este o
mtodo POSIX. Caso voc v utilizar ER em outra linguagem, pode ter de fazer algumas adaptaes)
ereg() e eregi()
Vou ensinar apenas essas duas Caso voc queira se aprofundar mais, olhe no manual do php no capitulo de
expresses regulares! :)
int ereg(string padro, string fonte [, array registro]);
Esta funo retorna TRUE se o padro dado for encontrado na fonte e FALSE caso contrrio.
!
*
+
,
-
.
/
0
&#:'Ri

d=(#>2# &#6A%$'% 6=(Y
&#:'R
&#:'RR
&#:'RRR
&#:'RRRR
GGG
!
*
+
,
-
.
/
[&#:'R]i

O$D &#6A%$ 6=(Y
&#:'R
&#:'R&#:'R
&#:'R&#:'R&#:'R
GGG
!
*
+
,
-
.
/
0
W
!V
!!
[&#:jEj%C$#>7]'R

O$D &#6A%$ 6=(Y
&#:'R
E'R
%C$#>7'R

KKKKKKKKKKK
k=<=jl%$'%) K `#6A% 6=( fk=<=f #( I9%:I9#$ C%$2# 7% T2$'>E =9 6=( fl%$'%f >= &'>%:
[k=<=jl%$'%]) K `#6A% 2%>2= 6=( mk=<=m I9%>2= ml%$'%mX C=$\(X >= &'>%: 7% T2$'>E
[M%8Q][M_nQ] K `#6A% 6=( f%_fX f%nfX f8_f # f8nf
!
*
+
,
-
.
/
0
W
!V
!!
!*
!+
ogCAC

)#(%': p f(%$'=qE(%':G6=(fr
)C%7$%= p m"[Gi]q[Gi]G[Gi])mr

!" [#$#E[)C%7$%=X)(%':]] a
C$'>2 fd#9 #(%': C%TT=9 >% @%:'7%6%=fr
b
#$%# a
C$'>2 fd#9 #(%': >%= C%TT=9 >% @%:'7%6%=fr
b

gs
0
O que temos?
A string dada dever comear com algum caractere qualquer em qualquer quantidade, seguido de uma arroba,
seguido de mais qualquer caractere em qualquer quantidade, seguido de um ponto literal, seguido de mais
qualquer sequncia de caracteres, que devero ento nalizar a string.
A funo eregi() se comporta de modo semelhante, porm no diferencia maisculas e minsculas.
Concluso
O mundo das expresses regulares muito grande e abrangente. Com certeza no vai ser com essa passada
de olho que voc vai se tornar um expert em ER, mas serve pra dar uma noo do que elas so e para que
servem!
Um grande abrao a todos e quem com Deus!
Rafael Jaques
13
Esta entrada foi publicada em Expresses Regulares e marcada com a tag ereg, expresses regulares, posix, regex. Adicione o link
permanente aos seus favoritos.
Leia tambm:
Nenhum artigo relacionado.
51 pessoas j comentaram! T esperando o qu?
Like
13 Send
Responder
4nd3rs0n (Kuen com balaca no nome) disse:
12 de novembro de 2007 s 13:13
Maz!!
Agora vou saber como "usar" as expresses regulares!
Utilizando Mozilla Firefox 2.0.0.9 no Windows XP

Responder
Xorna disse:
12 de novembro de 2007 s 16:40
Ae Rafa, show de bola esse post, expresses regulares so importantes para quem tem um caminho a seguir pela programao.
Assunto inevitvel, parabns pelo post e pelo blog que t com o layout 100% aqui no Feisty Fawn
abrao
Utilizando Mozilla Firefox 2.0.0.3 no Ubuntu Linux

Responder
Tomas disse:
13 de novembro de 2007 s 7:20
Dessa vez acho que eu aprendo :D
Utilizando Mozilla Firefox 2.0.0.9 no Windows Vista

Responder
Anderson Triacca disse:
13 de novembro de 2007 s 9:43
Car#$%, acho que agora nalmente entend expresses regulares
Flw
Utilizando Mozilla Firefox 2.0.0.9 no Windows XP

Responder
Esdras disse:
13 de novembro de 2007 s 15:21
Maza.
Grande Rafavou usar sim, no Linux vai ajudar um monte
so tem que ler neh
hehe
sucesso pra ti
Utilizando Internet Explorer 6.0 no Windows XP

Responder
felipe tonello disse:
14 de novembro de 2007 s 13:44
Iae Mew..
Muito bom o artigo, parabns!!!
ER muito importante mesmo, aqui no VIM eu uso toda hora.. quebra um galho muito grande produtividade ao mximo!!
Abraos
Utilizando Mozilla Firefox 2.0.0.8 no Linux

Responder
Andr disse:
11 de junho de 2008 s 9:52
Parabns cara, apesar de ter pouco conteudo tem muita qualidade
Utilizando Mozilla Firefox 2.0.0.14 no Windows XP

Responder
Alexandre Borges Souza disse:
2 de maro de 2009 s 19:41
Eu estava procurando algo que me explica sobre expresso regular! Voc um anjo da guarda! Valeu cara!
Utilizando Mozilla Firefox 3.0.6 no Windows Vista

Responder
.bnj disse:
21 de maro de 2009 s 1:43
<script>alert("Xss");</script>
Utilizando Google Chrome 1.0.154.48 no Windows Vista

Responder
giu disse:
21 de maro de 2009 s 1:44
<iframe src="http://www.google.com&quot; width="300" onload=alert("Xss"); >
Utilizando Google Chrome 1.0.154.48 no Windows Vista

Responder
Jefrey disse:
25 de agosto de 2011 s 21:05
Opa, cara, no vulnervel kkkkkkkk
Pela proximidade dos comentrios (1 minuto), parece que voc o autor do de cima tambm.
O que burrice, j que ele no aceitou nem as tags de script, porque aceitaria iframe?
Mas pela escolha do sistema operacional j se conhece o guri, ou melhor, o kiddie kkkkk
Quanto ao artigo, est excelente!
Caiu como uma luva. Valeu!
Utilizando Google Chrome 13.0.782.107 no Linux

Responder
Rafael Jaques disse:
21 de maro de 2009 s 9:13
Eu acho que vou deixar a esses dois comentrios acima! :P
Utilizando Mozilla Firefox 3.0.7 no Mac OS X 10

Responder
Ederson Dias disse:
25 de maro de 2009 s 18:05
Parabns pelo post, mto bom!
Utilizando Mozilla Firefox 3.0.1 no Windows XP

Responder
Wesley disse:
26 de maro de 2009 s 16:59
Bem legal esse artigo, p!
mesmo eu programando em asp.net, foi bem til esse artigo, est muito bem explicado! :D
E esses comentrios a da pessoa tentando colocar um script foi legal.. kkkkkkk
Abraos,
Utilizando Mozilla Firefox 3.0.7 no Windows Vista
Responder
Junior disse:
15 de abril de 2009 s 15:48
Eu queria uma explicao de como denir um nmero mnimo de nmeros para uma estring,
Ex A senha deve conter pelo menos 3 nmeros e no mnimo 6 caracteres.
Valeu
Utilizando Internet Explorer 7.0 no Windows XP

Responder
Gabriel Antunes disse:
24 de abril de 2009 s 17:20
Rafael,
muito obrigado pelo artigo, me ajudou muito a desenvolver um problema aqui no trabalho, mas por faltade tempo e preguia nunca
optaava por estudar "expresses regulares", agora parando e analisando, no adianta, mesmo que tendo que quebrar a cabea um
pouquinho muitas vezes a melhor sada, ainda mais quem trabalha com contedo de texto. Valeu mesmo. S um acertozinho: no
exemplo voc declarou com a varivel $email, depois na hora de jogar dentro da funo eregi(); voc ps $mail. S acerta isso l.
Nada que vai atrapalhar o aprendizado, mas s um acertozinho a fazer
GRande Abraos!!!!!
Gabriel Antunes.
Utilizando Mozilla Firefox 3.0.6 no Linux

CAIO disse:
18 de junho de 2009 s 11:31
Primeiro lugar: essa perguntinha ai pra validar esse comentrio ruim.
Pergunta: qual a cor do crculo na bandeira do japo?
Eu sou daltnico!!!! Sacanagem!
Bom o artigo nota 10!
No sabia fazer um expresso regular com 100% de certeza at ler esse artigo!!
Parabns!

Responder
Utilizando Google Chrome 1.0.154.36 no Windows XP
Responder
Marcel disse:
16 de julho de 2009 s 23:55
Show de bola, muito explicativo e direto, me ajudou bastante, obrigado!
Abrao.
Utilizando Mozilla Firefox 3.5 no Windows Vista

Responder
Nei disse:
28 de julho de 2009 s 13:26
Muito interessante eu realmente no tinha noo de como funcionavam, embora j tivesse manipulado algumas expresses j
criadas por outros programadores
Este foi o inicio, vou me aprofundar
Utilizando Mozilla Firefox 3.5.1 no Windows 7

Responder
SPAMER disse:
4 de agosto de 2009 s 21:30
Vlw ajudo mt tio
Utilizando Opera 9.64 no Windows XP

Responder
aneildo disse:
11 de agosto de 2009 s 13:48
muito bom o artivo
vlw
Utilizando Mozilla Firefox 3.0.13 no Windows 7

Responder
Jio disse:
18 de agosto de 2009 s 8:47
Hmm Ento quer dizer que no nal das contas ER no morde
Bom artigo, obrigado.
Utilizando Mozilla Firefox 3.0.13 no Ubuntu Linux

Thiago Colares disse:
9 de outubro de 2009 s 9:50
Responder
Bem legal o artigo, parabns! Gostaria de colocar um link no meu blog Estou autorizado? Rs Um abrao.
Utilizando Mozilla Firefox 3.0.14 no Ubuntu Linux
Responder
Ricardo disse:
22 de outubro de 2009 s 8:59
Muito bom cara, parabns eu realmente entendi por aqui mais sobre ER. abs
Utilizando Mozilla Firefox 3.5.3 no Windows XP

Responder
roger disse:
20 de novembro de 2009 s 18:55
thanks
Utilizando Mozilla Firefox 3.5.5 no Windows Vista

Responder
Luiz Henrique disse:
11 de dezembro de 2009 s 9:40
Muito bom o artigo! Parabns continue escrevendo bons artigos.
Obrigado!
Utilizando PHP

Responder
Rogrio disse:
24 de janeiro de 2010 s 10:45
Muito legal kra achei massa
Utilizando Mozilla Firefox 3.5.7 no Windows 7

Responder
Fernando Wobeto disse:
23 de fevereiro de 2010 s 2:34
Cara, muito bom, estava pesquisando sobre urls amigaveis no PHP e acabei me deparando com esse timo tutorial.
Meus parabens!!
Utilizando Google Chrome 4.0.249.89 no Windows XP

Jefferson Souza disse:
15 de maro de 2010 s 20:49
timo tutorial mas s lembrando a galera que as funes ereg e as demais da mesma classe foram depreciadas no PHP 5.3 e

Responder
sero excluidas no PHP6 =[ ou seja, cuidado quanto ao uso a soluo seria a preg_match
Utilizando Mozilla Firefox 3.6 no Windows Vista
Responder
Jason disse:
22 de maro de 2010 s 10:54
pois bem, estava eu navegando pelo google em busca de expresses regulares, e seu blog apareceu por primeiro! bacana no?
hehe.
muito bom o post, nalmente comecei a entender o sentido de todos aqueles caracteres.hehehe.
agora vamos tentar usa-los. grande abrao!
Utilizando Mozilla Firefox 3.6 no Windows 7

Responder
Bruno disse:
8 de abril de 2010 s 13:47
Excelente post, sobre expresses regulares sempre tive diculdades de ententer esse assunto, bem se v que voc teve trabalho
de fazer um post que no fosse um CTRL C, CTRL V como a gente encontra por ai. Parabns!Ajudou muito
Utilizando Mozilla Firefox 3.5.3 no Ubuntu Linux

Responder
Magnus disse:
28 de maio de 2010 s 15:12
muito bom, valeu
Utilizando Mozilla Firefox 3.6.3 no Windows 7

Responder
Jordo disse:
30 de julho de 2010 s 14:07
Cara, muito bom.
Finalmente tive uma noo sobre o que so as ER.
Muito obrigado mesmo.
Preciso usar isso no meu .htaccess.
Vlw!
Utilizando Mozilla Firefox 3.6.8 no Windows XP

Responder
JL Almeida Neto disse:
9 de agosto de 2010 s 10:33
Parabns cara, muito bom.
Finalmente consegui entender rsrsrsrs

Utilizando Google Chrome 5.0.375.125 no Windows XP
Responder
Inacio disse:
16 de setembro de 2010 s 12:04
Parabns pelo post!
Gostaria de saber se tem como identicar se uma string est codicada ou no.
EX:
str1 = "teste de ao %30";
str2 = "teste%20de%20a%E7%E3o%20-%20%2530";
Preciso realizar o urlencode nas variaveis, porm no posso realizar esta operao caso a varivel j esteja codicada.
Utilizando Mozilla Firefox 3.6.9 no Windows 7

Responder
Tiago Butzke disse:
30 de setembro de 2010 s 14:38
Muito bom cara.
Parabns pelo artigo.
Abraos!
Utilizando Safari 533.18.5 no Mac OS X 10.6.4

Responder
Paulo Taneda disse:
30 de outubro de 2010 s 8:15
Excelente artigo, muito til.
Utilizando Google Chrome 7.0.517.41 no Windows Vista

Responder
Wagner disse:
10 de novembro de 2010 s 14:08
Estada Precisando fazer uma pgina de indexao, e seu artigo foi muito til, parabns!!!
Utilizando Lynx 2.8.7dev.9

@DagmarCirino disse:
28 de novembro de 2010 s 12:54
Muito bom, tirei algumas dvidas bem bsicas agora aqui no trabalho, que eu tava com diculdade de fazer =]
Vlw
********************
ahhh

Responder
"<iframe src="http://www.google.com&quot; width="300" onload=alert("Xss"); >"
Da s uma olhada no sistema operacional do bixinho.
Utilizando Google Chrome 9.0.570.0 no Windows 7
Responder
Joo Paulo Cercal disse:
16 de dezembro de 2010 s 7:37
Excelente o artigo, nalmente entendi o que so expresses regulares. Obrigado!
Utilizando Mozilla Firefox 3.6.13 no Windows XP

Responder
Raphael disse:
27 de dezembro de 2010 s 10:06
Parabns pelo artigo, est bem claro!
Utilizando Mozilla Firefox 3.5.16 no Windows 2000

Responder
Marlon disse:
27 de dezembro de 2010 s 14:24
tima Postagem , me ajudou muito :D
Utilizando Mozilla Firefox 2.0.0.18 no Linux

Responder
Jonas disse:
8 de janeiro de 2011 s 10:05
Mto show, vlw
Utilizando Mozilla Firefox 3.6.13 no Windows XP

Responder
Flvio Vinicius disse:
18 de fevereiro de 2011 s 20:08
Gostei! Beastante direto e explicativo!
Utilizando Google Chrome 9.0.597.98 no Windows XP

jacs disse:
2 de agosto de 2011 s 7:41
Obrigado!
Valeu :-)

Responder
Utilizando Mozilla Firefox 3.6.18 no Windows XP
Responder
joaquim cleto de sousa disse:
14 de setembro de 2011 s 10:08
Muito bom e fcil de entender. Poderia acrescentar outros comandos, como por exemplo o retrovisor.
Um abrao.
Utilizando Mozilla Firefox 3.0.8 no Windows XP

Responder
sammyo freitas disse:
14 de setembro de 2011 s 12:36
Muito bom, gostei muito do seu post.
Tudo muito bem explicado e suciente para ter uma noo.
Utilizando Mozilla Firefox 6.0.1 no Windows 7

Responder
ADRYLB disse:
16 de setembro de 2011 s 21:12
Muito bom, esclareceu e muito minhas duvidas
Na verdade usou de todos os operadores e explicou mesmo o que queria saber
Muito obrigado
Utilizando Google Chrome 13.0.782.220 no Windows 7

Responder
Kilderson Sena disse:
20 de setembro de 2011 s 10:20
Muito bom artigo sobre Expresses Regulares, o melhor que vi at agora. Precisei compreender para poder desenvolver uma
especca para a emprea onde trabalho e esse artigo me ajudou bastante!
Parabns ao auto, continue assim !
Utilizando Mozilla Firefox 6.0 no Windows 7

Responder
Joo disse:
19 de outubro de 2011 s 14:05
Cara, muito bom. Me ajudou bastante!
Utilizando Google Chrome 14.0.835.202 no Windows XP


Responder
Fernando disse:
19 de outubro de 2011 s 16:58
Muito bom o material, bem explicado, ajudou muito minha tarefa aqui na empresa!
Parabns pelo Blog, Favoritado
Utilizando Mozilla Firefox 7.0.1 no Windows XP