cerebro-vip INEMA.CLUB
inícioINEMA.IA CONCEITOS

Tópico dedicado ao INEMA REGEX, um GPT customizado para ensino e…

INEMA.IA CONCEITOS · 2025-08-17 · ~5 min · ver no Telegram ↗

INEMA

chatgpt.com ↗

causando “quase matches”. Solução: ancorar quando quiser validar a string inteira. * Greedy demais. Solução: quantificador não-guloso, ex.: .*? entre marcadores. * Falta de Unicode. Solução: ativar flag adequada ((?u) no PCRE/Python 3 já é default) e usar \p{L}.

Cheatsheet mínimo para lembrar

  • começo/fim: ^ \$
  • fronteira: \b
  • dígito/letra/espaço: \d \w \s
  • negações: \D \W \S
  • quantidade: * + ? {n} {n,} {n,m}
  • grupos: ( ) (?: ) (? )
  • alternância: |
  • lookarounds: (?= ) (?! ) (?<= ) (?\<! )

Exercícios com resposta

  1. Pegar números com separador de milhar ponto e decimal vírgula Regex: \b\d{1,3}(?:.\d{3})*(?:,\d{2})?\b Ex.: 1.234,56 999 12.000

  2. Validar placa Mercosul simples Regex: \b[A-Z]{3}\d[A-Z]\d{2}\b

  3. Extrair tudo entre [INÍCIO] e [FIM] de forma não gulosa Regex: $INÍCIO$([\s\S]*?)$FIM$

  4. Dividir CSV respeitando aspas Regex: /,(?=(?:[^"]"[^"]")[^"]\$)/

  5. Pegar somente palavras com acento Regex: \b[\p{L}][À-ÖØ-öø-ÿ][\p{L}]\b

Lista final de tópicos com exemplos e respostas

  1. Âncoras e fronteiras Exemplo: validar string inteira numérica Regex: ^\d+\$ Resposta: casa para “12345”, não casa “12a”

  2. Classes e faixas Exemplo: só vogais Regex: (?i)^[aeiou]+\$ Resposta: “AeiO” ok, “abc” não

  3. Quantificadores e ganância Exemplo: pegar menor conteúdo entre aspas Regex: "(.*?)" Resposta: em Ele disse “oi” e “tchau”, captura “oi” e “tchau” separadamente

  4. Grupos de captura e nomeados Exemplo: data dd/mm/aaaa Regex: (?\d{2})/(?\d{2})/(?\d{4}) Resposta: groups d=“16” m=“08” a=“2025”

  5. Alternância Exemplo: cor aceita verm|azul|verde Regex: \b(vermelho|azul|verde)\b Resposta: casa apenas essas cores

  6. Lookahead Exemplo: número antes de “kg” Regex: \d+(?=\s?kg\b) Resposta: “5 kg” retorna “5”

  7. Lookbehind Exemplo: preço após “R\$ ” Regex: (?<=\bR\$\s)\d+(?:,\d{2})? Resposta: em “R\$ 19,90” retorna “19,90”

  8. Substituição Exemplo: comprimir espaços Regex: \s{2,} → substituir por “ ” Resposta: “um dois” vira “um dois”

  9. Flags Exemplo: case-insensitive Regex: (?i)\bbrasil\b Resposta: casa “Brasil”, “BRASIL”, “brasil”

  10. Unicode Exemplo: só letras e espaços com acentos Regex: (?u)^[\p{L}\s]+\$ Resposta: “São Tomé” ok; “Rio-1” não

Vou demonstrar regex de forma prática, direta e com muitos exemplos. Se algo foi um typo de “regex”, já vou cobrir do básico ao avançado.

Resumo rápido

Regex (expressões regulares) é uma mini-linguagem para buscar, validar e transformar texto. Com ela você consegue:

  • validar formatos (e-mail, CPF, datas)
  • extrair partes específicas (números, hashtags, grupos)
  • substituir trechos com regras (mascarar dados, reformatar datas)
  • dividir texto de forma inteligente

Conceitos fundamentais

  • Literais: texto simples. Ex.: pizza casa
  • Metacaracteres comuns: . ^ \$ * + ? { } [ ] ( ) | \
  • Âncoras: ^ (início), \$ (fim), \b (fronteira de palavra)
  • Classes: [abc], faixas [0-9], atalhos \d \w \s e seus opostos \D \W \S
  • Quantificadores: * (0+), + (1+), ? (0/1), {n}, {n,}, {n,m}
  • Grupos: ( ... ) captura, (?: ... ) não captura, nomeados (?...)
  • Alternância: a|b
  • Lookaround: (?=...) lookahead positivo, (?!...) negativo, (?<=...) lookbehind positivo, (?\<!...) negativo
  • Flags: i (case-insensitive), g (global JS), m (multilinha), s (dotall), u (Unicode)

Tabela mental de atalhos úteis

  • \d dígito, \w letra/número/_ , \s espaço/tab/linha
  • \b fronteira de palavra, \B não-fronteira
  • . qualquer caractere (sem \n, a menos de flag s)
  • [^...] negação dentro da classe

Exemplos práticos (rápidos)

  1. CEP brasileiro simples Regex: \b\d{5}-?\d{3}\b

  2. Telefone BR básico (com ou sem DDD, com 9) Regex: \b(?:$\d{2}$\s?)?(?:9\d{4}|\d{4})-?\d{4}\b

  3. E-mail razoável Regex: \b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}\b

  4. Somente letras (inclui acentos com Unicode) Regex: (?u)^[\p{L}\s]+\$

  5. Data dd/mm/aaaa com validação parcial Regex: \b(0?[1-9]|[12]\d|3[01])/(0?[1-9]|1[0-2])/\d{4}\b

  6. Capturar número depois de “Pedido #” Regex: Pedido\s+#(\d+)

  7. Extração de hashtags Regex: #([\p{L}0-9_]+)

  8. Remover múltiplos espaços Regex: \s{2,} substitua por: espaço simples

  9. Split por vírgula fora de aspas Regex: /,(?=(?:[^"]"[^"]")[^"]\$)/

  10. Validar CPF só por formato (não dígitos verificadores) Regex: \b\d{3}.\d{3}.\d{3}-\d{2}\b

Demonstrações em código

JavaScript

```// 1) Encontrar todos e-mails const txt = "Fale com ana@mail.com ou suporte@empresa.co"; const emails = txt.match(/\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}\b/g);

// 2) Substituir datas de dd/mm/aaaa para aaaa-mm-dd const s = "Hoje: 16/08/2025, amanhã: 17/08/2025"; const iso = s.replace(/\b(0?[1-9]|[12]\d|3[01])\/(0?[1-9]|1[0-2])\/(\d{4})\b/g, (m,d,mn,y) => ${y}-${mn.padStart(2,'0')}-${d.padStart(2,'0')});

// 3) Captura nomeado (em engines compatíveis com lookbehind e grupos nomeados) const texto = "Pedido #34821 confirmado"; const m = texto.match(/Pedido\s+#(?\d+)/); const id = m?.groups?.id; // "34821"```

Python

```import re

1) CEP

cep_re = re.compile(r"\b\d{5}-?\d{3}\b") print(cep_re.findall("CEP 90619-900 e 01310100"))

2) Extrair hashtags (Unicode)

hashtags = re.findall(r"#([\w\p{L}]+)", "Post #Vida #AI #Inovação", flags=re.UNICODE) print(hashtags)

3) Substituir múltiplos espaços por um

print(re.sub(r"\s{2,}", " ", "um dois três"))```

Lookarounds na prática

  • Pegar números seguidos de “kg” sem capturar “kg” Regex: \b(\d+(?:,\d+)?) (?=kg\b)

  • Pegar palavras que não são seguidas de ponto final Regex: \b(\p{L}+)(?!.)\b

  • Capturar algo precedido por “R\$ ” Regex: (?<=\bR\$\s)\d+(?:,\d{2})?

Casos do mundo real

Validar senha forte

  • mínimo 8, uma maiúscula, uma minúscula, um dígito, um especial Regex: ^(?=.[a-z])(?=.[A-Z])(?=.\d)(?=.[^A-Za-z0-9]).{8,}\$

Mascarar CPF mantendo últimos 2 dígitos

  • Encontrar: \b(\d{3}).(\d{3}).(\d{3})-(\d{2})\b
  • Substituir: *.\$2.\$3- ou usar função para formatar conforme a política

Extrair domínios de URLs Regex: https?://([^/\s]+)

Quebrar em sentenças simples (pontos não dentro de números) Regex: (?<=\S[.!?])\s+(?=[A-ZÁ-Ú])

Erros comuns e como evitar

  • Usar . achando que pega tudo, mas falta a flag dotall (s). Solução: ativar s ou usar [\s\S].
  • Esquecer âncoras ^ e \$,

INEMA REGEX - Formatação de RegEX

chatgpt.com ↗

1

Recursos

↑ voltar ao topo · ver no Telegram ↗