SlideShare a Scribd company logo
1 of 36
Download to read offline
Expressões Regulares
Uma gentil introdução
Bruno Croci
@CrociDB
http://bruno.croci.me/
http://crocidb.com/
O que é uma
Expressão Regular?
● regex
● regexp
● regular expressions
● rational expression
● expressão regular
● espressione regolare
● . . .
“… provê uma forma concisa e flexível de identificar cadeias de
caracteres de interesse, como caracteres particulares, palavras
ou padrões de caracteres”
-- Wikipédia
Uma linguagem de definição de padrões
de texto
Utilidade
● Pesquisa em texto
● Manipulação:
substituições de partes
do texto
● Validação de
informações
Como usar
● Qualquer editor de texto
bom
○ Office
○ Sublime Text
● Linguagens de
Programação:
provavelmente todas
Ferramentas?
Funcionamento
Expressão Regular -> Texto
Match
Casamento
Exemplo 1
Procurando um texto simples
Vamos procurar a palavra Vestibulum
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut
malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur
sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc
eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis
suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris
ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus,
tempor eu tincidunt eu, placerat id dui.
Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero
tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer
maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque.
Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim
risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim
eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam
consectetur arcu felis, a pulvinar ipsum tempus ut.
/Vestibulum/
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut
malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur
sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc
eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis
suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris
ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus,
tempor eu tincidunt eu, placerat id dui.
Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero
tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer
maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque.
Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim
risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim
eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam
consectetur arcu felis, a pulvinar ipsum tempus ut.
/Vestibulum|vestibulum/
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut
malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur
sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc
eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis
suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris
ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus,
tempor eu tincidunt eu, placerat id dui.
Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero
tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer
maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque.
Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim
risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim
eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam
consectetur arcu felis, a pulvinar ipsum tempus ut.
/[Vv]estibulum/
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut
malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur
sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc
eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis
suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris
ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus,
tempor eu tincidunt eu, placerat id dui.
Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero
tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer
maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque.
Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim
risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim
eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam
consectetur arcu felis, a pulvinar ipsum tempus ut.
[]
Casa com qualquer caracter dentro dos colchetes!
[aeiou]
Vai casar com qualquer vogal em um texto
[a-z0-9]
Funciona com intervalos também
Exemplo 2
Validando CEPs
/[0-9]{5}-[0-9]{3}/
07154-003
{}
Quantidade de caracteres previamente especificado.
{1,5}
Também aceita intervalos: entre 1 e 5 caracteres aceitos.
Quantidade
● *: qualquer quantidade, entre 0 e
indefinido. Equivalente a {0,}
● ?: exatamente 0 ou exatamente 1.
Equivalente a {0,1}
● +: 1 ou mais, até indefinido.
Equivalente a {1,}
Outros delimitadores de
quantidade
Exemplo 3
Pegando todas as palavras de um texto
/[^ .,…—]*/
poema nos meus 43 anos
terminar sozinho
no túmulo de um quarto
sem cigarros
nem bebida—
careca como uma lâmpada,
barrigudo,
grisalho,
e feliz por ter um quarto.
…de manhã
eles estão lá fora
ganhando dinheiro:
juízes, carpinteiros,
encanadores , médicos,
jornaleiros, guardas,
barbeiros, lavadores de carro,
dentistas, floristas,
garçonetes, cozinheiros,
motoristas de táxi…
e você se vira
para o lado pra pegar o sol
nas costas e não
direto nos olhos.
-- Charles Bukowski
Exemplo 4
Validando emails
/[a-z.-0-9]{1,100}@[a-z-]{1,100}(?:.[a-z0-9]{1,10}){1,5}/
bruno.croci@samsung.com
testemail@gmail.com
jose@me.com
()
Agrupamento. Há grupos de captura e grupos de não captura.
(?: )
Grupos Normais
Agrupa regras para que elas possam ser repetidas
Miniexemplo
/[a-z.-0-9]{1,100}@[a-z-]{1,100}(?:.[a-z0-9]{1,10}){1,5}/
email@dom.ext.com.br
Repetindo a definição de extensão
de domínio no email
( )
Grupos de Captura
Aplica a expressão de regular e define que apenas parte do texto pode ter alguma
importância.
Miniexemplo
07154-003
/[0-9]{5}-([0-9]{3})/
07154-003
Pegando o sufixo de um CEP
(bb|[^b]{2}) -- Continue aprendendo!
Dúvidas?
Obrigado.
Bruno Croci
@CrociDB
http://bruno.croci.me/
http://crocidb.com/
http://labs.crocidb.com/regex/

More Related Content

Similar to Introdução a Expressões Regulares

Similar to Introdução a Expressões Regulares (7)

Apresentação abstrata colorida
Apresentação abstrata coloridaApresentação abstrata colorida
Apresentação abstrata colorida
 
FIAT - Novo Uno
FIAT - Novo UnoFIAT - Novo Uno
FIAT - Novo Uno
 
Branding - Polo Náutico Biguaçu
Branding - Polo Náutico BiguaçuBranding - Polo Náutico Biguaçu
Branding - Polo Náutico Biguaçu
 
De OO para FP
De OO para FPDe OO para FP
De OO para FP
 
Introdução ao Lucene.net
Introdução ao Lucene.netIntrodução ao Lucene.net
Introdução ao Lucene.net
 
Institutional education
Institutional educationInstitutional education
Institutional education
 
APP.pptx
APP.pptxAPP.pptx
APP.pptx
 

Introdução a Expressões Regulares

  • 1. Expressões Regulares Uma gentil introdução Bruno Croci @CrociDB http://bruno.croci.me/ http://crocidb.com/
  • 2. O que é uma Expressão Regular?
  • 3. ● regex ● regexp ● regular expressions ● rational expression ● expressão regular ● espressione regolare ● . . .
  • 4. “… provê uma forma concisa e flexível de identificar cadeias de caracteres de interesse, como caracteres particulares, palavras ou padrões de caracteres” -- Wikipédia
  • 5. Uma linguagem de definição de padrões de texto
  • 6. Utilidade ● Pesquisa em texto ● Manipulação: substituições de partes do texto ● Validação de informações
  • 7. Como usar ● Qualquer editor de texto bom ○ Office ○ Sublime Text ● Linguagens de Programação: provavelmente todas Ferramentas?
  • 11.
  • 12. Exemplo 1 Procurando um texto simples
  • 13. Vamos procurar a palavra Vestibulum Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus, tempor eu tincidunt eu, placerat id dui. Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque. Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam consectetur arcu felis, a pulvinar ipsum tempus ut.
  • 14. /Vestibulum/ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus, tempor eu tincidunt eu, placerat id dui. Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque. Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam consectetur arcu felis, a pulvinar ipsum tempus ut.
  • 15. /Vestibulum|vestibulum/ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus, tempor eu tincidunt eu, placerat id dui. Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque. Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam consectetur arcu felis, a pulvinar ipsum tempus ut.
  • 16. /[Vv]estibulum/ Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque porttitor urna a cursus egestas. Vestibulum in faucibus nibh. Sed ut malesuada nisi. Etiam maximus semper convallis. Donec mi nunc, gravida eget viverra sed, convallis vulputate libero. Ut consectetur sapien in turpis tristique, non ullamcorper nunc ultricies. Nam accumsan justo non justo congue, eu gravida libero pulvinar. Nunc eget eros vel quam laoreet sagittis at sit amet felis. Quisque lacus felis, sagittis a venenatis vitae, interdum id nunc. Morbi sagittis suscipit erat a vestibulum. Vestibulum mi odio, maximus nec pharetra ac, tempus eget enim. Phasellus eu aliquam diam. Mauris ultrices vel dui vel efficitur. Duis id egestas nisl. Nulla mauris lacus, sodales non cursus ut, congue vitae risus. Nulla magna risus, tempor eu tincidunt eu, placerat id dui. Vivamus fringilla massa vel feugiat facilisis. Ut non suscipit leo. Phasellus facilisis nisi enim, ac ultricies erat varius vel. Ut libero tortor, fringilla nec venenatis sit amet, sodales vel purus. Vivamus ac orci commodo, bibendum urna vel, placerat nibh. Integer maximus lorem tellus, vel suscipit orci dapibus nec. Nulla elementum tincidunt molestie. Nam mattis laoreet pellentesque. Vestibulum condimentum, eros ut elementum interdum, ex arcu sollicitudin augue, in pretium lectus tellus sed lectus. Proin enim risus, placerat id fermentum consequat, posuere eget nibh. Phasellus at tellus ex. Praesent porttitor, dui a egestas semper, nunc enim eleifend nunc, at consectetur ex nisi nec sem. Pellentesque metus diam, fringilla ac gravida ac, vehicula vitae sem. Aliquam consectetur arcu felis, a pulvinar ipsum tempus ut.
  • 17. [] Casa com qualquer caracter dentro dos colchetes!
  • 18. [aeiou] Vai casar com qualquer vogal em um texto
  • 22. {} Quantidade de caracteres previamente especificado.
  • 23. {1,5} Também aceita intervalos: entre 1 e 5 caracteres aceitos.
  • 24. Quantidade ● *: qualquer quantidade, entre 0 e indefinido. Equivalente a {0,} ● ?: exatamente 0 ou exatamente 1. Equivalente a {0,1} ● +: 1 ou mais, até indefinido. Equivalente a {1,} Outros delimitadores de quantidade
  • 25. Exemplo 3 Pegando todas as palavras de um texto
  • 26. /[^ .,…—]*/ poema nos meus 43 anos terminar sozinho no túmulo de um quarto sem cigarros nem bebida— careca como uma lâmpada, barrigudo, grisalho, e feliz por ter um quarto. …de manhã eles estão lá fora ganhando dinheiro: juízes, carpinteiros, encanadores , médicos, jornaleiros, guardas, barbeiros, lavadores de carro, dentistas, floristas, garçonetes, cozinheiros, motoristas de táxi… e você se vira para o lado pra pegar o sol nas costas e não direto nos olhos. -- Charles Bukowski
  • 29. () Agrupamento. Há grupos de captura e grupos de não captura.
  • 30. (?: ) Grupos Normais Agrupa regras para que elas possam ser repetidas
  • 32. ( ) Grupos de Captura Aplica a expressão de regular e define que apenas parte do texto pode ter alguma importância.