SlideShare uma empresa Scribd logo
1 de 59
Baixar para ler offline
Minicurso Expressões
Regulares
Danilo Pinotti e Matheus Mazepa
Danilo Pinotti
danilopinotti@hotmail.com
Desenvolvedor WEB, líder técnico e
infra na empresa Let’s Sistemas
(2017 - Atualmente).
Administrador de sistemas na
Faculdade Guarapuava (2017);
Tecnólogo em Sistemas para
Internet (UTFPR - Guarapuava,
2017);
Ex-estagiário na área de redes e de
administração de sistemas (UTFPR,
2015-2017);
Matheus Mazepa
mfmazepa@hotmail.com
Estudante do 6º período de
Tecnologia em Sistemas para
Internet;
Programador e cara do sorvete na
Let’s Sistemas (2017 - 2019).
Cara do sorvete (Atualmente)
Roteiro
● O que é REGEX
● Exemplos práticos de utilização
● Conceitos básicos e ferramentas
● Construção de uma REGEX
● Boas práticas
● Como utilizar
● Desafios
O que é REGEX ?
Expressão regular é uma forma de
representar palavras, frases ou até
parágrafos através de uma única
notação.
.*
^[-a-z0-9._]+@[a-z0-9]+.[a-z]+.([a-z]+)?$
O que é RegEx ?
Expressão Regular é uma linguagem de busca de padrões. É uma linguagem onde
inserimos um padrão de texto (pattern), o texto alvo (target) e pedimos para a
Regex Engine fazer esta busca.
Exemplos práticos de
utilização
Exemplos de utilização
● Validações de formatos de textos (email, CPF, RG, etc.);
● Buscar palavras escritas duas vezes seguidas;
● Buscar por frases que não terminam com a pontuação adequada;
● Buscar linhas vazias ou com determinado tamanho;
● Separar dados que estão contidos em uma mesma linha (logs);
● Fazer substituições precisas;
Exemplo Real: O problema
Exemplo Real: O problema
Em 117 (CENTO E
DEZESSETE) linhas
diferentes!!!
Exemplo Real: A solução
Tempo de resolução do problema:
Escrever a Regex: ~ 1 minuto
Executar a Regex: < 50 ms
Mais exemplos de utilização
● Buscar por nomes de funções (camelCase, snake_case, kebab-case,
PascalCase);
● Buscar lugares em que o espaço está posicionado errado (antes/depois de
pontuações);
● Buscar por linhas que não terminam com ponto e vírgula;
● Comentar todas as linhas de um arquivo de uma vez só;
● etc.
Exemplo Real: O problema
- Estava tentando lembrar o nome de uma função que eu já
havia utilizado no projeto e só me recordava do início
dela: array_
- Na documentação da linguagem (PHP) existiam dezenas
de funções que começavam desta mesma maneira...
Exemplo Real: A solução
Conceitos básicos
Conceitos básicos
Palavra match. A tradução literal desta palavra é
“corresponder’” porém, neste contexto, a palavra será
utilizada para dizer que uma expressão regular “casou” com
uma palavra, frase ou parágrafo, ou seja, quando uma
expressão regular conseguir representar o que foi planejada
para representar.
Conceitos básicos
Uma expressão regular é lida como uma palavra onde cada
parte dela (letra ou símbolo) representa, inicialmente, apenas
um caractere.
Conceitos básicos
Expressões Regulares, também conhecidas como RegEx são compostas por
caracteres literais e metacaracteres.
São chamados metacaracteres os caracteres que servem para representar,
quantificar, agrupar ou posicionar outros caracteres. São eles:
. ? * + ^ $ | [ ] { } ( ) 
Para transformar um metacaractere em um caractere literal, utiliza-se o escape ().
Por exemplo: ? . +
Ferramentas
Regex101: https://regex101.com/
RegexR: https://regexr.com/
Google Chrome Console.
Qualquer editor de texto voltado para programação: Atom, Sublime, PHPStorm,
etc.
Extensão para o Google Chrome: find+ | Regex Find-in-Page Tool
Construindo uma REGEX
Metacaracteres: Lista [ … ]
A lista é um dos componentes mais utilizados. Ela permite você escolher quais
caracteres poderão aparecer no lugar em que ela foi colocada.
Metacaracteres: Lista [ … ]
Uma lista representa apenas um caractere.
Dentro da lista todos os caracteres são literais, com exceção do traço (-), do
acento circunflexo (^) e, caso não seja o primeiro ítem da lista, o colchete de
fechar (]).
É possível utilizar um intervalo de dados dentro da listas, desta forma,
facilitando filtrar caracteres. Os intervalos mais comuns são:
a-z A-Z 0-9
Para construir mais intervalos, consultar tabela ASCII.
Metacaracteres: Lista negada [ ^ … ]
Uma lista negada funciona de forma semelhante à lista comum. A diferença é que
ela casa com qualquer caractere, exceto com os que estão dentro dela.
Metacaracteres: Ponto .
O ponto ( . ) é um metacaractere curinga que se casa com absolutamente
qualquer caractere.
Metacaracteres quantificadores: Chaves { }
O metacaractere chave é utilizado para limitar quantas vezes um elemento da
REGEX poderá se se repetir. Você pode escolher:
Exatamente uma quantidade: #[A-F0-9]{6} (cor em Hexa Decimal, P.E)
Quantidade mínima de ocorrências: .{8,} (senha de no mínimo 8 dígitos, P.E)
Entre uma quantidade e outra de ocorrências: [a-zA-Z0-9_]{3, 15} (nome de
variável, P.E)
Metacaracteres quantificadores: ?
Este metacaractere permite tornar opcional a ocorrência do elemento ao seu lado.
Equivalente a ______
Metacaracteres quantificadores: ?
Este metacaractere permite tornar opcional a ocorrência do elemento ao seu lado.
Equivalente a {0,1}
Metacaracteres quantificadores: * e +
Ambos servem para não limitar a quantidade de vezes de ocorrências de um
elemento da REGEX.
O que muda é que enquanto o ‘*’ pode casar nenhum ou muitos, o ‘+’ casa com um
ou mais.
Metacaracteres quantificadores: * e +
Estes metacaracteres são gulosos. Eles sempre vão tentar casar o máximo
possível. Para evitar este comportamento, coloque a interrogação ao lado direito
deles.
Metacaracteres âncoras: ^ e $
Metacaracteres chamados de âncoras são aqueles que permitem você “posicionar”
sua expressão regular.
O circunflexo (^) indica o início de uma linha enquanto o cifrão ($) indica o final.
Metacaracteres âncoras: b
Este metacaractere representa uma borda de palavra indicando o início ou o fim
dela. A borda não necessariamente será um espaço.
Metacaracteres tipo barra-letra
Esses metacaracteres são formados por uma "" seguida de uma letra, cada letra
altera o significado desse metacaractere.
As letras maiúsculas geralmente são a negação dos seus valores minúsculos
Metacaracteres tipo barra-letra: w e W
O metacaractere w casa com valores
alfanuméricos (A-Za-z0-9).
Já o metacaractere W casa com valores
que não sejam alfanuméricos.
Metacaracteres tipo barra-letra: d e D
O metacaractere d casa com valores
numéricos.
Já o metacaractere D casa com valores
diferente de números.
Metacaracteres tipo barra-letra: s e S
O metacaractere s espaços.
Já o metacaractere S casa com não espaço.
Metacaracteres: Grupos ( )
Grupos são poderosos. Com grupos você pode:
- Agrupar elementos de uma RegEx (não me diga);
- Repetir séries de elementos;
- Capturar trechos específicos.
Metacaracteres: Grupos ( )
Antes, com listas, você poderia quantificar apenas um elemento, agora com
grupos, você pode quantificar trechos inteiros de uma RegEx:
Metacaracteres: Grupos ( )
Para cada grupo, é criado uma referência à ele na memória, podendo ser
acessados em código. A forma de fazer este acesso varia de acordo com o
interpretador/compilador utilizado.
Metacaracteres: Retrovisores n
Os retrovisores servem para buscar por palavras ou trechos de RegEx repetidos e
só funcionam junto com grupos.
Temos no máximo 9 retrovisores por RegEx.
([A-Za-z]+)-?1 -> Casa com bombom, lili, bibi, e outros apelidos e nomes de
cachorro
(quero)-?1 -> Casa com quero-quero
in(do)lo(r) é sem 12 -> Casa com ?
Metacaracteres: Ou ( | )
O metacaractere Ou ( | ) é utilizado quando precisamos casar mais de um termo
em um mesmo local de uma regex. Pode ser utilizado junto ou não com grupos.
Boas práticas
Não complicar
Nem sempre a ER menor é a
melhor.
(mini|super|hiper)mercado
Utilizar circunflexo Há ganhos reais de desempenho
quando utilizamos âncoras: ^ e $
Evitar lista negada
Tentar utilizar possibilidades
válidas em listas comuns;
Não ter preguiça de descobrir todas
as possibilidades de uma posição;
Seja específico
Tentar evitar a utilização do curinga
(ponto);
O que você quer casar? Em que
quantidade ? Em qual contexto ou
posição ?
Redução nas chances de falhas.
Como elaborar uma
boa RegEx
1. Mentalizar um objetivo (Casar
emails, telefones, etc.);
2. Fazer um modelo genérico
cheio de curingas;
3. Torná-la mais específica
testando cada modificação;
4. Ao terminar, buscar por
exceções e alternativas.
Como utilizar
Java
PHP
JavaScript
Desafios
Desafios
1. Comentar todas as linhas de um arquivo
2. Verificar se um e-mail é válido.
3. Verificar se um CNPJ está no formato correto: xx.xxx.xxx/xxxx-x
4. Verificar se um dado horário é válido (formato 24h)
5. Buscar por palavras escritas duas vezes seguidas
6. Buscar lugares em que o espaço está errado: antes/depois de
pontuações
7. Nomes de funções (buscar camelCase, snake_case, kebab-case,
PascalCase)
Dúvidas ?
Obrigado
Contatos
danilopinotti@hotmail.com
mfmazepa@hotmail.com
Referências
JARGAS, A. M. Expressões Regulares uma Abordagem Divertida. 4 ed. NOVATEC, 2016
MELO – Raul Felipe – Entendendo de uma vez por todas Expressões Regulares –
2017 – em:
https://medium.com/trainingcenter/entendendo-de-uma-vez-por-todas-express%
C3%B5es-regulares-parte-1-introdu%C3%A7%C3%A3o-dfe63e289dc3

Mais conteúdo relacionado

Semelhante a Minicurso de Expressões Regulares (REGEX)

Semelhante a Minicurso de Expressões Regulares (REGEX) (20)

Regex
RegexRegex
Regex
 
PHP
PHPPHP
PHP
 
Php
PhpPhp
Php
 
Boas práticas de programação em C# .NET
Boas práticas de programação em C# .NETBoas práticas de programação em C# .NET
Boas práticas de programação em C# .NET
 
Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2Algoritmos 1 - Semana 2
Algoritmos 1 - Semana 2
 
Linguagem de Programação PERL
Linguagem de Programação PERLLinguagem de Programação PERL
Linguagem de Programação PERL
 
Algoritmo de Rabin-Karp
Algoritmo de Rabin-KarpAlgoritmo de Rabin-Karp
Algoritmo de Rabin-Karp
 
Part1
Part1Part1
Part1
 
Expressões Regulares - Final
Expressões Regulares - FinalExpressões Regulares - Final
Expressões Regulares - Final
 
Dicas Excel
Dicas ExcelDicas Excel
Dicas Excel
 
PHP Básico - Parte 3
PHP Básico - Parte 3PHP Básico - Parte 3
PHP Básico - Parte 3
 
Curso De Shell Aula 6
Curso De Shell   Aula 6Curso De Shell   Aula 6
Curso De Shell Aula 6
 
Fpar aula5
Fpar aula5Fpar aula5
Fpar aula5
 
Minicurso Ruby on Rails Dextra
Minicurso Ruby on Rails DextraMinicurso Ruby on Rails Dextra
Minicurso Ruby on Rails Dextra
 
JS - JavaScript.pdf
JS - JavaScript.pdfJS - JavaScript.pdf
JS - JavaScript.pdf
 
PHP - Strings
PHP - StringsPHP - Strings
PHP - Strings
 
Comandos básicos Linux.docx
Comandos básicos Linux.docxComandos básicos Linux.docx
Comandos básicos Linux.docx
 
02 1 algoritmos
02 1 algoritmos02 1 algoritmos
02 1 algoritmos
 
Manual-de-php
Manual-de-phpManual-de-php
Manual-de-php
 
Introdução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação RubyIntrodução a Linguagem de Programação Ruby
Introdução a Linguagem de Programação Ruby
 

Mais de Danilo Pinotti

Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfDanilo Pinotti
 
Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]Danilo Pinotti
 
Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Danilo Pinotti
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Danilo Pinotti
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACDanilo Pinotti
 
Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Danilo Pinotti
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3Danilo Pinotti
 
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Danilo Pinotti
 
Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6Danilo Pinotti
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDanilo Pinotti
 

Mais de Danilo Pinotti (12)

Do Zero à Produção
Do Zero à ProduçãoDo Zero à Produção
Do Zero à Produção
 
Site estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdfSite estático + Hospedagem Gratuita.pdf
Site estático + Hospedagem Gratuita.pdf
 
Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]Vue 2 - Componentes [2 de 2 - 2020]
Vue 2 - Componentes [2 de 2 - 2020]
 
Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]Vue - Básico sobre Vue [1 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
 
Code Review
Code ReviewCode Review
Code Review
 
Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)Minicurso GIT Completo (2022)
Minicurso GIT Completo (2022)
 
Minicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENACMinicurso GIT 2022 - SENAC
Minicurso GIT 2022 - SENAC
 
Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2Talk sobre testes automatizados. Parte 1/2
Talk sobre testes automatizados. Parte 1/2
 
O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3O básico sobre Vue 2. Talk Vue Básico 1/3
O básico sobre Vue 2. Talk Vue Básico 1/3
 
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
 
Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6Alguns Helpers do Laravel 5.6
Alguns Helpers do Laravel 5.6
 
Deixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidasDeixando aplicações Laravel mais rápidas
Deixando aplicações Laravel mais rápidas
 

Minicurso de Expressões Regulares (REGEX)

  • 2. Danilo Pinotti danilopinotti@hotmail.com Desenvolvedor WEB, líder técnico e infra na empresa Let’s Sistemas (2017 - Atualmente). Administrador de sistemas na Faculdade Guarapuava (2017); Tecnólogo em Sistemas para Internet (UTFPR - Guarapuava, 2017); Ex-estagiário na área de redes e de administração de sistemas (UTFPR, 2015-2017);
  • 3. Matheus Mazepa mfmazepa@hotmail.com Estudante do 6º período de Tecnologia em Sistemas para Internet; Programador e cara do sorvete na Let’s Sistemas (2017 - 2019). Cara do sorvete (Atualmente)
  • 4. Roteiro ● O que é REGEX ● Exemplos práticos de utilização ● Conceitos básicos e ferramentas ● Construção de uma REGEX ● Boas práticas ● Como utilizar ● Desafios
  • 5. O que é REGEX ?
  • 6. Expressão regular é uma forma de representar palavras, frases ou até parágrafos através de uma única notação.
  • 7. .*
  • 9. O que é RegEx ? Expressão Regular é uma linguagem de busca de padrões. É uma linguagem onde inserimos um padrão de texto (pattern), o texto alvo (target) e pedimos para a Regex Engine fazer esta busca.
  • 11. Exemplos de utilização ● Validações de formatos de textos (email, CPF, RG, etc.); ● Buscar palavras escritas duas vezes seguidas; ● Buscar por frases que não terminam com a pontuação adequada; ● Buscar linhas vazias ou com determinado tamanho; ● Separar dados que estão contidos em uma mesma linha (logs); ● Fazer substituições precisas;
  • 12. Exemplo Real: O problema
  • 13. Exemplo Real: O problema Em 117 (CENTO E DEZESSETE) linhas diferentes!!!
  • 14. Exemplo Real: A solução Tempo de resolução do problema: Escrever a Regex: ~ 1 minuto Executar a Regex: < 50 ms
  • 15. Mais exemplos de utilização ● Buscar por nomes de funções (camelCase, snake_case, kebab-case, PascalCase); ● Buscar lugares em que o espaço está posicionado errado (antes/depois de pontuações); ● Buscar por linhas que não terminam com ponto e vírgula; ● Comentar todas as linhas de um arquivo de uma vez só; ● etc.
  • 16. Exemplo Real: O problema - Estava tentando lembrar o nome de uma função que eu já havia utilizado no projeto e só me recordava do início dela: array_ - Na documentação da linguagem (PHP) existiam dezenas de funções que começavam desta mesma maneira...
  • 17. Exemplo Real: A solução
  • 19. Conceitos básicos Palavra match. A tradução literal desta palavra é “corresponder’” porém, neste contexto, a palavra será utilizada para dizer que uma expressão regular “casou” com uma palavra, frase ou parágrafo, ou seja, quando uma expressão regular conseguir representar o que foi planejada para representar.
  • 20. Conceitos básicos Uma expressão regular é lida como uma palavra onde cada parte dela (letra ou símbolo) representa, inicialmente, apenas um caractere.
  • 21. Conceitos básicos Expressões Regulares, também conhecidas como RegEx são compostas por caracteres literais e metacaracteres. São chamados metacaracteres os caracteres que servem para representar, quantificar, agrupar ou posicionar outros caracteres. São eles: . ? * + ^ $ | [ ] { } ( ) Para transformar um metacaractere em um caractere literal, utiliza-se o escape (). Por exemplo: ? . +
  • 22. Ferramentas Regex101: https://regex101.com/ RegexR: https://regexr.com/ Google Chrome Console. Qualquer editor de texto voltado para programação: Atom, Sublime, PHPStorm, etc. Extensão para o Google Chrome: find+ | Regex Find-in-Page Tool
  • 24. Metacaracteres: Lista [ … ] A lista é um dos componentes mais utilizados. Ela permite você escolher quais caracteres poderão aparecer no lugar em que ela foi colocada.
  • 25. Metacaracteres: Lista [ … ] Uma lista representa apenas um caractere. Dentro da lista todos os caracteres são literais, com exceção do traço (-), do acento circunflexo (^) e, caso não seja o primeiro ítem da lista, o colchete de fechar (]). É possível utilizar um intervalo de dados dentro da listas, desta forma, facilitando filtrar caracteres. Os intervalos mais comuns são: a-z A-Z 0-9 Para construir mais intervalos, consultar tabela ASCII.
  • 26. Metacaracteres: Lista negada [ ^ … ] Uma lista negada funciona de forma semelhante à lista comum. A diferença é que ela casa com qualquer caractere, exceto com os que estão dentro dela.
  • 27. Metacaracteres: Ponto . O ponto ( . ) é um metacaractere curinga que se casa com absolutamente qualquer caractere.
  • 28. Metacaracteres quantificadores: Chaves { } O metacaractere chave é utilizado para limitar quantas vezes um elemento da REGEX poderá se se repetir. Você pode escolher: Exatamente uma quantidade: #[A-F0-9]{6} (cor em Hexa Decimal, P.E) Quantidade mínima de ocorrências: .{8,} (senha de no mínimo 8 dígitos, P.E) Entre uma quantidade e outra de ocorrências: [a-zA-Z0-9_]{3, 15} (nome de variável, P.E)
  • 29. Metacaracteres quantificadores: ? Este metacaractere permite tornar opcional a ocorrência do elemento ao seu lado. Equivalente a ______
  • 30. Metacaracteres quantificadores: ? Este metacaractere permite tornar opcional a ocorrência do elemento ao seu lado. Equivalente a {0,1}
  • 31. Metacaracteres quantificadores: * e + Ambos servem para não limitar a quantidade de vezes de ocorrências de um elemento da REGEX. O que muda é que enquanto o ‘*’ pode casar nenhum ou muitos, o ‘+’ casa com um ou mais.
  • 32. Metacaracteres quantificadores: * e + Estes metacaracteres são gulosos. Eles sempre vão tentar casar o máximo possível. Para evitar este comportamento, coloque a interrogação ao lado direito deles.
  • 33. Metacaracteres âncoras: ^ e $ Metacaracteres chamados de âncoras são aqueles que permitem você “posicionar” sua expressão regular. O circunflexo (^) indica o início de uma linha enquanto o cifrão ($) indica o final.
  • 34. Metacaracteres âncoras: b Este metacaractere representa uma borda de palavra indicando o início ou o fim dela. A borda não necessariamente será um espaço.
  • 35. Metacaracteres tipo barra-letra Esses metacaracteres são formados por uma "" seguida de uma letra, cada letra altera o significado desse metacaractere. As letras maiúsculas geralmente são a negação dos seus valores minúsculos
  • 36. Metacaracteres tipo barra-letra: w e W O metacaractere w casa com valores alfanuméricos (A-Za-z0-9). Já o metacaractere W casa com valores que não sejam alfanuméricos.
  • 37. Metacaracteres tipo barra-letra: d e D O metacaractere d casa com valores numéricos. Já o metacaractere D casa com valores diferente de números.
  • 38. Metacaracteres tipo barra-letra: s e S O metacaractere s espaços. Já o metacaractere S casa com não espaço.
  • 39. Metacaracteres: Grupos ( ) Grupos são poderosos. Com grupos você pode: - Agrupar elementos de uma RegEx (não me diga); - Repetir séries de elementos; - Capturar trechos específicos.
  • 40. Metacaracteres: Grupos ( ) Antes, com listas, você poderia quantificar apenas um elemento, agora com grupos, você pode quantificar trechos inteiros de uma RegEx:
  • 41. Metacaracteres: Grupos ( ) Para cada grupo, é criado uma referência à ele na memória, podendo ser acessados em código. A forma de fazer este acesso varia de acordo com o interpretador/compilador utilizado.
  • 42. Metacaracteres: Retrovisores n Os retrovisores servem para buscar por palavras ou trechos de RegEx repetidos e só funcionam junto com grupos. Temos no máximo 9 retrovisores por RegEx. ([A-Za-z]+)-?1 -> Casa com bombom, lili, bibi, e outros apelidos e nomes de cachorro (quero)-?1 -> Casa com quero-quero in(do)lo(r) é sem 12 -> Casa com ?
  • 43. Metacaracteres: Ou ( | ) O metacaractere Ou ( | ) é utilizado quando precisamos casar mais de um termo em um mesmo local de uma regex. Pode ser utilizado junto ou não com grupos.
  • 45. Não complicar Nem sempre a ER menor é a melhor. (mini|super|hiper)mercado
  • 46. Utilizar circunflexo Há ganhos reais de desempenho quando utilizamos âncoras: ^ e $
  • 47. Evitar lista negada Tentar utilizar possibilidades válidas em listas comuns; Não ter preguiça de descobrir todas as possibilidades de uma posição;
  • 48. Seja específico Tentar evitar a utilização do curinga (ponto); O que você quer casar? Em que quantidade ? Em qual contexto ou posição ? Redução nas chances de falhas.
  • 49. Como elaborar uma boa RegEx 1. Mentalizar um objetivo (Casar emails, telefones, etc.); 2. Fazer um modelo genérico cheio de curingas; 3. Torná-la mais específica testando cada modificação; 4. Ao terminar, buscar por exceções e alternativas.
  • 51. Java
  • 52. PHP
  • 55. Desafios 1. Comentar todas as linhas de um arquivo 2. Verificar se um e-mail é válido. 3. Verificar se um CNPJ está no formato correto: xx.xxx.xxx/xxxx-x 4. Verificar se um dado horário é válido (formato 24h) 5. Buscar por palavras escritas duas vezes seguidas 6. Buscar lugares em que o espaço está errado: antes/depois de pontuações 7. Nomes de funções (buscar camelCase, snake_case, kebab-case, PascalCase)
  • 59. Referências JARGAS, A. M. Expressões Regulares uma Abordagem Divertida. 4 ed. NOVATEC, 2016 MELO – Raul Felipe – Entendendo de uma vez por todas Expressões Regulares – 2017 – em: https://medium.com/trainingcenter/entendendo-de-uma-vez-por-todas-express% C3%B5es-regulares-parte-1-introdu%C3%A7%C3%A3o-dfe63e289dc3