SlideShare uma empresa Scribd logo
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

PPTX
Expressões Regulares - Parte II
PDF
Delphi Conference 2011 - Desmistificando as Expressões Regulares
PPTX
Expressões Regulares - Introdução
ODP
Regex
PDF
Minicurso de Rails - WTISC 2014
PDF
Expressões regulares, grep e sed - Bóson Treinamentos
PPTX
Expressões regulares
PPT
Lcl Aula3
Expressões Regulares - Parte II
Delphi Conference 2011 - Desmistificando as Expressões Regulares
Expressões Regulares - Introdução
Regex
Minicurso de Rails - WTISC 2014
Expressões regulares, grep e sed - Bóson Treinamentos
Expressões regulares
Lcl Aula3

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

PPTX
PPT
Php
PPSX
Boas práticas de programação em C# .NET
PDF
Projeto Integrador Transdisciplinar em Análise e Desenvolvimento de Sistemas I.
PPTX
Algoritmos 1 - Semana 2
PPT
Linguagem de Programação PERL
PPT
Algoritmo de Rabin-Karp
PPTX
Expressões Regulares - Final
PPTX
PHP Básico - Parte 3
PDF
Curso De Shell Aula 6
PDF
Fpar aula5
ODP
Minicurso Ruby on Rails Dextra
PDF
JS - JavaScript.pdf
PDF
PHP - Strings
DOCX
Comandos básicos Linux.docx
PDF
02 1 algoritmos
PDF
Manual-de-php
Php
Boas práticas de programação em C# .NET
Projeto Integrador Transdisciplinar em Análise e Desenvolvimento de Sistemas I.
Algoritmos 1 - Semana 2
Linguagem de Programação PERL
Algoritmo de Rabin-Karp
Expressões Regulares - Final
PHP Básico - Parte 3
Curso De Shell Aula 6
Fpar aula5
Minicurso Ruby on Rails Dextra
JS - JavaScript.pdf
PHP - Strings
Comandos básicos Linux.docx
02 1 algoritmos
Manual-de-php
Anúncio

Mais de Danilo Pinotti (18)

PDF
Open Source: Ferramentas Gratuitas Incríveis
PDF
Logs: A Chave para um Diagnóstico Eficiente e Boas Práticas de Monitoramento
PDF
Segurança Digital Pessoal e Boas Práticas
PDF
Design Pattern: Pending Objects com exemplos
PDF
Padrões de Projeto: Proxy e Command com exemplo
PDF
Boas práticas de programação com Object Calisthenics
PDF
Do Zero à Produção
PDF
Site estático + Hospedagem Gratuita.pdf
PPTX
Vue 2 - Componentes [2 de 2 - 2020]
PPTX
Vue - Básico sobre Vue [1 de 2 - 2020]
PDF
Code Review
PDF
Minicurso GIT Completo (2022)
PDF
Minicurso GIT 2022 - SENAC
PDF
Talk sobre testes automatizados. Parte 1/2
PDF
O básico sobre Vue 2. Talk Vue Básico 1/3
PDF
Comunicação entre componentes com Vue 2. Talk Vue Básico 2/3
PDF
Alguns Helpers do Laravel 5.6
PDF
Deixando aplicações Laravel mais rápidas
Open Source: Ferramentas Gratuitas Incríveis
Logs: A Chave para um Diagnóstico Eficiente e Boas Práticas de Monitoramento
Segurança Digital Pessoal e Boas Práticas
Design Pattern: Pending Objects com exemplos
Padrões de Projeto: Proxy e Command com exemplo
Boas práticas de programação com Object Calisthenics
Do Zero à Produção
Site estático + Hospedagem Gratuita.pdf
Vue 2 - Componentes [2 de 2 - 2020]
Vue - Básico sobre Vue [1 de 2 - 2020]
Code Review
Minicurso GIT Completo (2022)
Minicurso GIT 2022 - SENAC
Talk sobre testes automatizados. Parte 1/2
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
Alguns Helpers do Laravel 5.6
Deixando aplicações Laravel mais rápidas
Anúncio

Último (16)

PPTX
Arquitetura de computadores - Memórias Secundárias
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PDF
COBITxITIL-Entenda as diferença em uso governança TI
PPTX
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PDF
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
PDF
Processos na gestão de transportes, TM100 Col18
PDF
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
PPTX
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
PDF
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express
Arquitetura de computadores - Memórias Secundárias
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Custos e liquidação no SAP Transportation Management, TM130 Col18
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
COBITxITIL-Entenda as diferença em uso governança TI
Informática Aplicada Informática Aplicada Plano de Ensino - estudo de caso NR...
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Termos utilizados na designação de relação entre pessoa e uma obra.pdf
Processos na gestão de transportes, TM100 Col18
Custos e faturamento no SAP S/4HANA Transportation Management, S4TM3 Col26
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Programação - Linguagem C - Variáveis, Palavras Reservadas, tipos de dados, c...
Como-se-implementa-um-softwareeeeeeeeeeeeeeeeeeeeeeeee.pptx
Fullfilment AI - Forum ecommerce 2025 // Distrito e Total Express

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