Professional Documents
Culture Documents
Expresses Regulares
Programao de Servidores
Marx Gomes Van der Linden
http://marx.vanderlinden.com.br/ 2
Expresses Regulares
Arquivos de configurao
Logs
ocumentos !"ML
#$digo%fonte e scripts
http://marx.vanderlinden.com.br/ 3
Expresses Regulares
"elefone
Su)stitui'es
#orre'es
Modifica'es
http://marx.vanderlinden.com.br/ 4
Expresses Regulares
Regular Expression
Regex
http://marx.vanderlinden.com.br/ 5
Histrico
Linguagens 0ormais
12;7: vi
9m padro,
9ma string,
\ : "ransforma um metacaractere em um
literal,
http://marx.vanderlinden.com.br/ 16
Exe&plo
&xpress'es regulares so escritas em uma
linguagem formal que pode ser interpretada por um
processador de expresso regular* um programa
que ou serve um gerador de analisador sinttico ou
examina o texto e identifica partes que casam com
a especificao dada,
/regular/
http://marx.vanderlinden.com.br/ 17
Exe&plo
&xpress'es regulares so escritas em uma
linguagem formal que pode ser interpretada por um
processador de expresso regular* um programa
que ou serve um gerador de analisador sinttico ou
examina o texto e identifica partes que casam com
a especificao dada,
/uma?/
http://marx.vanderlinden.com.br/ 18
Exe&plo
&xpress'es regulares so escritas em uma
linguagem formal que pode ser interpretada por um
processador de expresso regular* um programa
que ou serve um gerador de analisador sinttico ou
examina o texto e identifica partes que casam com
a especificao dada,
/a.a/
http://marx.vanderlinden.com.br/ 19
Exe&plo
&xpress'es regulares so escritas em uma
linguagem formal que pode ser interpretada por um
processador de expresso regular* um programa
que ou serve um gerador de analisador sinttico ou
examina o texto e identifica partes que casam com
a especificao dada,
/pro.+r/
http://marx.vanderlinden.com.br/ 20
Exe&plo
&xpress'es regulares so escritas em uma
linguagem formal que pode ser interpretada por um
processador de expresso regular* um programa
que ou serve um gerador de analisador sinttico ou
examina o texto e identifica partes que casam com
a especificao dada,
/pro.+r/
http://marx.vanderlinden.com.br/ 21
Quati!icadores 'ulosos
-.gito e o/d.gito:
\d , "-%*#
\. , "$-%*#
)l!au&0rico e o/al!au&0rico:
\w , "a%z/%z-%*0#
\1 , "$a%z/%z-%*0#
Espa"o e o/espa"o:
\2 , "\n\r\f\) #
\3 , "$\n\r\f\) #
http://marx.vanderlinden.com.br/ 39
Exe&plo: -ata
Simplificando a sintaxe
6\d\d?/\d\d?/\d{4}6
4/-4/2---
-(/5/2--5
42/44/4**5
/25/2--&
44/42/-&
42%44%4**5
http://marx.vanderlinden.com.br/ 41
Exe&plo: -ata
Posio entre \w e \1
$ ou 9
\: , Go%fronteira da palavra
http://marx.vanderlinden.com.br/ 43
Exe&plo: -ata
Fsolando a data:
6$\d\d?"/\%\.#\d\d?"/\%\.#(\d\d){4,2}96
4/-4/2---
42/44/4**5
4/-4/2--- fo8 o d8a...
...na2ceu eu 42/44/4**5.
http://marx.vanderlinden.com.br/ 44
Exe&plo: -ata
Fsolando a data:
6\b\d\d?"/\%\.#\d\d?"/\%\.#(\d\d){4,2}\b6
4/-4/2---
42/44/4**5
4/-4/2--- fo8 o d8a...
...na2ceu eu 42/44/4**5.
;o<= = 42%44%4*5.
http://marx.vanderlinden.com.br/ 45
Exe&plo: Edere"o #)C
&ndereo MA#
/$("\da%f/%>#{2}?){5}"\da%f/%>#{2}9/
-4?25?45?'(?&*?/b
--?5-?5'?c-?--?-&
-4?25?45
-42545'(&*/b
-4?25?45?'(?&?/b
-4?25?45?'(?&*?/b?
http://marx.vanderlinden.com.br/ 46
#odi!icadores
http://marx.vanderlinden.com.br/ 48
Exe&plo
a)cdefgBi
5Jlmnopqr
stuv(xK-
/$<Al/ /gB89/
/pCr.2/
http://marx.vanderlinden.com.br/ 49
#odi!icador: m
a)cdefgBi
5Jlmnopqr
stuv(xK-
/$<Al/m /gB89/m
/pCr.2/
http://marx.vanderlinden.com.br/ 50
#odi!icador: 2
a)cdefgBi
5Jlmnopqr
stuv(xK-
/$<Al/m /gB89/m
/pCr.2/2
http://marx.vanderlinden.com.br/ 51
#odi!icador: x
/$
#Cdigo seguido por :, 5 vezes:
(
"\da%f#{2} #Dgito ou hexa
?
) {5}
#Cdigo sem :, 2 vezes:
"\da%f#{2}
9/8x
http://marx.vanderlinden.com.br/ 53
Exe&plo: 3R4 H55P6H55P7
E$(B))p2?)?//
("\da%z#"%\w#*"\da%z#\.)+ #Domnio
"a%z#{2,*} #Top-eve
(?\d{4,4})? #!orta
("%\w/6F?.?+GHIDF#*) #!ar"metros
9E8x
http://marx.vanderlinden.com.br/ 54
Exe&plo: 3R4 H55P6H55P7
B))p2?//www.m2.com/
B))p2?//meu28)e.com?&-&-
B))p?//m2.com/28)e/Bome
B))p?//m2.com/a.pBp?xG5H!G4
f)p?//meuf)p.com
B))p2?//.meu28)e.com
www.meu28)e.com
http://marx.vanderlinden.com.br/ 55
Exe&plo: Cor H5#46C77
0un'es /$ereg0.+/
0un'es /$preg0.+/
Sintaxe >simplificada?:
preg0ma)cB(9padrJo, 9alKo)
preg0ma)cB(9padrJo, 9alKo,
H9cap)ura2)
SaAda:
Mampo2 encon)rado2?TbrU
-, L*/44/4*54LTbrU
4, L*LTbrU
2, L44LTbrU
5, L4*54LTbrU
4, L54LTbrU
http://marx.vanderlinden.com.br/ 62
'rupo se& captura: (??...)
SaAda:
Mampo2 encon)rado2?TbrU
-, L*/44/4*54LTbrU
4, L*LTbrU
2, L44LTbrU
5, L4*54LTbrU
http://marx.vanderlinden.com.br/ 65
Exe&plo :16;<
T?pBp 9regex G L
E$(B))p2?)?//
#Domnio
(
(??"\da%z#"%\w#*"\da%z#\.)+
("a%z#{2,*}) #Top-eve
)
(???\d{4,4})? #!orta
("%\w/6F?.?+GHIDF#*) #!ar"metros
9E8xLO
9url G LB))p?//marx.Kanderl8nden.com.br/
p2.pBpLO
http://marx.vanderlinden.com.br/ 66
Exe&plo :;6;<
8f (preg0ma)cB(9regex, 9url, 9m)) {
?U
TulU
Tl8U@VW? T?pBp ecBo 9m"-# ?UT/l8U
Tl8UXro)ocolo? T?pBp ecBo 9m"4# ?UT/l8U
Tl8U.omYn8o?T?pBp ecBo 9m"2# ?U
T/l8U
Tl8UPop%leKel? T?pBp ecBo 9m"5# ?UT/l8U
Tl8UMam8nBo? T?pBp ecBo 9m"4# ?UT/l8U
T/ulU
T?pBp } ?U
http://marx.vanderlinden.com.br/ 67
7a.da
http://marx.vanderlinden.com.br/ 68
=o&eado os grupos
(?TnomeU...)
/a(?Tle)ra2Ubx+c)*d/
http://marx.vanderlinden.com.br/ 69
Exe&plo :16;<
T?pBp 9regex G L
E$(?Tpro)oU B))p2?)?//
#Domnio
(?Tdom8n8oU
(??"\da%z#"%\w#*"\da%z#\.)+
(?T)opU "a%z#{2,*}) #Top-eve
)
(???\d{4,4})? #!orta
(?TparU "%\w/6F?.?+GHIDF#*)
9E8xLO
9url G LB))p?//marx.Kanderl8nden.com.br/
p2.pBpLO
http://marx.vanderlinden.com.br/ 70
Exe&plo :;6;<
8f (preg0ma)cB(9regex, 9url, 9m)) { ?U
TulU
Tl8U@VW? T?pBp ecBo 9m"-# ?UT/l8U
Tl8UXro)ocolo? T?pBp ecBo 9m"pro)o# ?U
T/l8U
Tl8U.omYn8o?
T?pBp ecBo 9m"dom8n8o# ?U
T/l8U
Tl8UPop%leKel? T?pBp ecBo 9m")op# ?U
T/l8U
Tl8UMam8nBo? T?pBp ecBo 9m"par# ?U
T/l8U
T/ulU T?pBp } ?U
http://marx.vanderlinden.com.br/ 71
preg8&atc98all
preg0ma)cB0all(9padrJo, 9alKo,
H9cap)ura2)
preg0ma)cB0all(9padrJo, 9alKo,
H9cap)ura2, "9flag#)
XVZ[0X/PPZV\0]V.ZV >padro?
XVZ[03ZP0]V.ZV
http://marx.vanderlinden.com.br/ 75
Exe&plo
92 G Labc abbcd abbccxd acxd abbccdLO
8f(preg0ma)cB0all(
L/a("bc#+)(x?)d/L, 92, 9enc,
XVZ[03ZP0]V.ZV
)){
foreacB(9enc a2 9m){
ecBo
QT2)rongU9m"-#? T/2)rongU QO
ecBo QL9m"4#L, L9m"2#LQO
ecBo QTbrUQO
}
}
http://marx.vanderlinden.com.br/ 76
preg8replace
SaAda:
http://marx.vanderlinden.com.br/ 78
preg8replace
9alKo G L] ga)o per2egu8u o ra)o, Cue
com8a Cue8<o.LO
9bu2ca G
arra!(L/"gr#a)o/L,L/C\w{5}/L)O
92ub2) G arra!(LmacacoL, LbananaL)O
ecBo preg0replace(
9bu2ca, 92ub2), 9alKo )O
] macaco per2egu8u o macaco, Cue com8a
banana.
SaAda:
http://marx.vanderlinden.com.br/ 79
preg8grep
preg02pl8)(9padrJo, 9alKo,
"9l8m8)e#)