Escolar Documentos
Profissional Documentos
Cultura Documentos
Aurelio Jargas
http://aurelio.net
@oreio
http://aurelio.net/regex/guia
http://piazinho.com.br
Regex?
de comer?
cora[c][a]o
cora[c][a]o
cora[c][a]o
corao
coraao
coraco
coracao
(mini|super|hiper)mercado
(mini|super|hiper)mercado
(mini|super|hiper)mercado
minimercado
supermercado
hipermercado
(mini|super|hiper)?mercado
minimercado
supermercado
hipermercado
mercado
\d\d\.\d\d\d-\d\d\d
\d\d\.\d\d\d-\d\d\d
\d\d\.\d\d\d-\d\d\d
80.000-000
80.220-320
12.345-678
77.777-777
\d\d\.\d\d\d-\d\d\d
\d{2}\.\d{3}-\d{3}
80.000-000
80.220-320
12.345-678
77.777-777
\d{3}\.\d{3}\.\d{3}-\d{2}
\d{3}\.\d{3}\.\d{3}-\d{2}
\d{3}\.\d{3}\.\d{3}-\d{2}
015.010.014-55
685.706.259-13
243.287.109-71
999.999.999-99
<p>.*</p>
<p>.*</p>
<p>.*</p>
<p>Ol</p>
<p>1, 2, 3, testando...</p>
<p><b>negrito</b></p>
cora[c][a]o
(mini|super|hiper)mercado
\d\d\.\d\d\d-\d\d\d
\d{3}\.\d{3}\.\d{3}-\d{2}
<p>.*</p>
cora[c][a]o
(mini|super|hiper)mercado
\d\d\.\d\d\d-\d\d\d
\d{3}\.\d{3}\.\d{3}-\d{2}
<p>.*</p>
glob
NO
regex
Glob
Regex
*.txt
.*\.txt
[aeiou]*
[aeiou].*
musica.{mp3,wav}
musica\.(mp3|wav)
foto-??.jpg
foto-..\.jpg
Onde usar
expresses regulares?
Editores de texto
Emacs
Vim
gedit
Kate
Sublime Text
Atom
TextMate
Notepad++
IDE, Office
Android Studio
Eclipse
Xcode
Visual Studio
LibreOffice
Google Planilhas
Microsoft Word
Linha de comando
Bash
grep
sed
awk
find
PowerShell
# Usurios com ID de 5 dgitos e shell Bash
egrep '^.*:x:[0-9]{5}:.*bash$' /etc/passwd
Servidores HTTP
Apache
Nginx
Bancos de dados
MySQL
MariaDB
PostgreSQL
SQLite
Oracle
Linguagens de programao
C
C#
C++
Delphi
Go
Haskell
Java
JavaScript
Lua
Objective-C
Perl
PHP
Python
R
Ruby
Scala
Tcl
Visual Basic
Substituio
replace
Procure por:
Troque por:
P[A-Z]+
XX
(.*)
$1
Oi, tudo bem?
Tudo bem.
(n[a]o)
<b>$1</b>
12:34
23:59
Procure por:
Troque por:
(\d\d):(\d\d)
$1 horas e $2 minutos
12 horas e 34 minutos
23 horas e 59 minutos
80220320
87654321
Procure por:
Troque por:
(\d{2})(\d{3})(\d{3})
$1.$2-$3
80.220-320
87.654-321
80.220-320
12.345-678
Procure por:
[^0-9]
Troque por:
80220320
12345678
2015-10-14
1999-12-31
Procure por:
Troque por:
(\d{4})-(\d{2})-(\d{2})
$3/$2/$1
14/10/2015
31/12/1999
Legvel
Complexo
../../....
\d{2}/\d{2}/\d{4}
[0123][0-9]/[01][0-9]/[12][0-9]{3}
(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/[12][0-9]{3}
((0[1-9]|[12][0-9])/02|(0[1-9]|[12][0-9]|30)/(0[469]|11)
|(0[1-9]|[12][0-9]|3[01])/(0[13578]|1[02]))/[12][0-9]{3}
Expresso Regular
pode no ser
a melhor soluo
((0[1-9]|[12][0-9])/02|(0[1-9]|[12][09]|30)/(0[469]|11)|(0[1-9]|[12][0-9]|3
[01])/(0[13578]|1[02]))/[12][0-9]{3}
31 dias
Ano bissexto
12 meses
Feriados
Dias teis
Fevereiro at 29
# Python
import datetime
datetime.datetime.strptime(
"31/12/1999",
"%d/%m/%Y"
)
zzz@zzz.zzz
foo@example.com
no existe
ningum l
asdf@gmail.com
outro l
Onde praticar?
http://regexpal.com
http://regex101.com