Download - 20150917 expressoes regulares
![Page 1: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/1.jpg)
Expressões regulares
Gabriell Nascimento
![Page 2: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/2.jpg)
ERs●Método para especificar padrões de texto●a.k.a.: ER, RE, Regex, Regexp
![Page 3: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/3.jpg)
ERs●Surgiram na matemática●Adicionadas ao ed●Biblioteca regex em C
![Page 4: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/4.jpg)
Pra que servem?●Busca●Substituição●Validação●Filtragem●Ganhar almoço●…
![Page 5: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/5.jpg)
Como funcionam?●Interpretador de expressões●Texto é comparado à expressão
![Page 6: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/6.jpg)
Conjunto de metacaracteres e caracteres literais que especifica um padrão de texto
Numa casca de noz
![Page 7: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/7.jpg)
Metacaracteres
. [] ? * + {} ^ $ | () \
![Page 8: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/8.jpg)
Metacaracteres●Representantes: . [] [^]●Quantificadores: ? * + {}●Âncoras: ^ $ \b●Outros: | () \ \1..\9
![Page 9: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/9.jpg)
RepresentantesPonto .
oQualquer caractere Lista [...]
oCaracteres permitidosLista negada [^...]
oCaracteres proibidos
![Page 10: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/10.jpg)
Exemplo.ato
oGato, gato, .ato, 1ato, … [gpr]ato
ogato, pato, rato[^gpr]ato
o .ato, 1ato, Gato, Pato, Rato, …
![Page 11: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/11.jpg)
QuantificadoresOpcional ?
o Zero ou umAsterisco *
o Zero, um ou maisMais +
o Um ou maisChaves {n,m}
o De n a m
![Page 12: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/12.jpg)
ExemploEi!?
o Ei, Ei!Ei!*
o Ei, Ei!, Ei!!!!!, … Ei!+
o Ei!, Ei!!!!!, … Ei!{2,5}
o Ei!!, Ei!!!, Ei!!!!, Ei!!!!!
![Page 13: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/13.jpg)
ÂncorasCircunflexo ^
o Início da linhaCifrão $
oFim da linhaBorda \b
o Início ou fim da palavra
![Page 14: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/14.jpg)
Exemplo^[a-z].+
oaa, b1, c^!1, … .+[a-z]$
o123a, 1b, aa, .z, $12d, … dia\b
odia, melodia, bom-dia, …
![Page 15: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/15.jpg)
OutrosEscape \
o Torna literal um caractere Ou |
o Ou um ou outroGrupo (...)
o Delimita um grupoRetrovisor \1..\9
o Guarda texto casado nos grupos 1..9
![Page 16: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/16.jpg)
Exemplohoje\??
o hoje, hoje?noite|tarde
o Boa noite, boa tarde, … (nyan)+
o nyan, nyannyan, nyannyannyannyannyannyan(bom)\1
o bombom
![Page 17: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/17.jpg)
![Page 18: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/18.jpg)
Mas primeiro!
![Page 19: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/19.jpg)
Mas primeiro!Algumas dicas.
![Page 20: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/20.jpg)
Dica #1Saiba o que você quer
![Page 21: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/21.jpg)
Dica #2Seja específic[ao]
![Page 22: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/22.jpg)
Dica #3KISS
(Keep It Simple, Stupid!)
![Page 23: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/23.jpg)
Dica #4Saiba quando usar
![Page 24: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/24.jpg)
$ cat /tmp/log.txt1.2.3.4 - - [17/Sep/2015:18:00:00 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.4 - - [17/Sep/2015:18:00:02 -0300] "GET /nao/tem HTTP/1.1" 404 421.2.3.3 - - [17/Sep/2015:18:00:05 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /nao/tem HTTP/1.1" 404 42
![Page 25: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/25.jpg)
$ cat /tmp/log.txt1.2.3.4 - - [17/Sep/2015:18:00:00 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.4 - - [17/Sep/2015:18:00:02 -0300] "GET /nao/tem HTTP/1.1" 404 421.2.3.3 - - [17/Sep/2015:18:00:05 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /nao/tem HTTP/1.1" 404 42
$ egrep -o "\[(/?.*){2}(:.*){3}\]" /tmp/log.txt[17/Sep/2015:18:00:00 -0300][17/Sep/2015:18:00:02 -0300][17/Sep/2015:18:00:05 -0300][17/Sep/2015:18:00:10 -0300][17/Sep/2015:18:00:10 -0300]
![Page 26: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/26.jpg)
$ cat /tmp/log.txt1.2.3.4 - - [17/Sep/2015:18:00:00 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.4 - - [17/Sep/2015:18:00:02 -0300] "GET /nao/tem HTTP/1.1" 404 421.2.3.3 - - [17/Sep/2015:18:00:05 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /nao/tem HTTP/1.1" 404 42
# Aplicando dicas 1 e 2$ egrep -o "[0-9]{2}/[A-Z][a-z]{2}/[0-9]{4}(:[0-9]{2}){3}" /tmp/log.txt17/Sep/2015:18:00:0017/Sep/2015:18:00:0217/Sep/2015:18:00:0517/Sep/2015:18:00:1017/Sep/2015:18:00:10
![Page 27: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/27.jpg)
$ cat /tmp/log.txt1.2.3.4 - - [17/Sep/2015:18:00:00 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.4 - - [17/Sep/2015:18:00:02 -0300] "GET /nao/tem HTTP/1.1" 404 421.2.3.3 - - [17/Sep/2015:18:00:05 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /nao/tem HTTP/1.1" 404 42
# Aplicando dica 3$ egrep -o "[0-9]{2}/[A-Z][a-z]{2}/[0-9]{4}:[0-9]{2}:[0-9]{2}:[0-9]{2}" \ /tmp/log.txt17/Sep/2015:18:00:0017/Sep/2015:18:00:0217/Sep/2015:18:00:0517/Sep/2015:18:00:1017/Sep/2015:18:00:10
![Page 28: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/28.jpg)
$ cat /tmp/log.txt1.2.3.4 - - [17/Sep/2015:18:00:00 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.4 - - [17/Sep/2015:18:00:02 -0300] "GET /nao/tem HTTP/1.1" 404 421.2.3.3 - - [17/Sep/2015:18:00:05 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /exemplo HTTP/1.1" 200 5121.2.3.3 - - [17/Sep/2015:18:00:10 -0300] "GET /nao/tem HTTP/1.1" 404 42
# Aplicando dicas 3 e 4$ cut -d' ' -f4 /tmp/log.txt | tr -d '['17/Sep/2015:18:00:0017/Sep/2015:18:00:0217/Sep/2015:18:00:0517/Sep/2015:18:00:1017/Sep/2015:18:00:10
![Page 29: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/29.jpg)
Para saber mais
![Page 30: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/30.jpg)
4 fun!http://regexcrossword.com/http://xkcd.com/208/http://xkcd.com/1171/
![Page 31: 20150917 expressoes regulares](https://reader035.vdocuments.site/reader035/viewer/2022062901/58f321b91a28aba9628b4597/html5/thumbnails/31.jpg)
Obrigado!