referência para desenvolvimento

Regex: testador e guia

Teste expressões regulares no navegador e consulte exemplos com pesquisa, cópia e impressão em PDF.

Ver comandos
35
comandos
7
categorias
0
dependências

Testador Regex online

JS RegExp

Este testador usa JavaScript RegExp com busca global (g). Use (?<name>...) para grupos nomeados. A sintaxe e as flags do módulo re mostradas abaixo devem ser executadas no Python. Limites: 100.000 caracteres no texto, 4.000 no padrão e 1.000 correspondências; padrões lentos são interrompidos.

Resultado das correspondências

35 comandos visíveis

Âncoras

4 comandos
^

Início da linha ou string

Âncorasseguro
Exemplo prático
^Hello  # corresponde a "Hello world", mas não a "say Hello"
$

Fim da linha ou string

Âncorasseguro
Exemplo prático
world$  # corresponde a "Hello world", mas não a "world class"
\b

Limite de palavra: transição entre caractere de palavra e outro tipo

Âncorasseguro
Exemplo prático
\bcat\b  # "cat", mas não "catch" nem "concat"
\B

Posição que não é um limite de palavra

Âncorasseguro
Exemplo prático
\Bcat\B  # "concatenate", mas não " cat "

Quantificadores

5 comandos
*

Zero ou mais vezes (guloso)

Quantificadoresseguro
Exemplo prático
ab*c  # "ac", "abc", "abbc", "abbbc"…
+

Uma ou mais vezes (guloso)

Quantificadoresseguro
Exemplo prático
ab+c  # "abc", "abbc", mas NÃO "ac"
?

Zero ou uma vez (opcional)

Quantificadoresseguro
Exemplo prático
colou?r  # "color" e "colour"
{n,m}

Entre n e m vezes

Quantificadoresseguro
Exemplo prático
\d{2,4}  # 2, 3 ou 4 dígitos
\d{3}    # exatamente 3 dígitos
*? +? ??

Versões preguiçosas (não gulosas)

Quantificadoresseguro
Exemplo prático
# entrada: "<b>bold</b>"
<.+>   # guloso: "<b>bold</b>"
<.+?>  # preguiçoso: "<b>" e depois "</b>"

Classes

5 comandos
[abc]

Classe de caracteres: um dos caracteres listados

Classesseguro
Exemplo prático
[aeiou]  # qualquer vogal
[a-z]  # minúsculas de a a z
[A-Za-z0-9]
[^abc]

Negação: qualquer caractere, exceto os listados

Classesseguro
Exemplo prático
[^0-9]  # caracteres que não são dígitos
\d \w \s

Abreviações: \d dígito, \w caractere de palavra, \s espaço em branco

Classesseguro
Exemplo prático
\d  # [0-9]
\w  # [a-zA-Z0-9_]
\s  # [ \t\n\r]
\D \W \S

Abreviações negadas

Classesseguro
Exemplo prático
\D  # não é um dígito
\W  # não é um caractere de palavra
\S  # não é um espaço em branco
.

Qualquer caractere, exceto terminadores de linha; a flag s (re.S no Python) também inclui quebras de linha

Classesseguro
Exemplo prático
a.b  # "aXb", "a b", "a1b"…

Grupos

6 comandos
(...)

Grupo de captura: captura a correspondência

Gruposseguro
Exemplo prático
(\d{4})-(\d{2})-(\d{2})
# corresponde a "2024-01-15", group(1)="2024"
(?:...)

Grupo sem captura: agrupa sem capturar

Gruposseguro
Exemplo prático
(?:Mr|Mrs|Ms)\.\s\w+
# agrupa alternativas sem capturar
(?<name>...)

Grupo nomeado: captura com um nome

Gruposseguro
Exemplo prático
JavaScript: (?<year>\d{4})-(?<month>\d{2})
match.groups.year

Python: (?P<year>\d{4})-(?P<month>\d{2})
m.group("year")
a|b

Alternativa: a ou b

Gruposseguro
Exemplo prático
cat|dog  # "cat" ou "dog"
(https?|ftp)://
(?=...) (?!...)

Lookahead positivo e negativo

Gruposseguro
Exemplo prático
\d+(?= euro)  # número seguido de " euro" (não captura " euro")
\d+(?! euro)  # número NÃO seguido de " euro"
(?<=...) (?<!...)

Lookbehind positivo e negativo

Gruposseguro
Exemplo prático
(?<=\$)\d+  # número precedido de "$"

Python re

6 comandos
re.search (pattern, string)

Encontra a primeira ocorrência em qualquer posição

Python reseguro
Exemplo prático
import re
m = re.search(r"\d+", "abc 123 def")
if m:
    print(m.group())  # "123"
re.match (pattern, string)

Busca apenas no início da string

Python reseguro
Exemplo prático
re.match(r"\d+", "123abc")  # correspondência
re.match(r"\d+", "abc123")  # None
re.findall (pattern, string)

Retorna uma lista com todas as correspondências

Python reseguro
Exemplo prático
re.findall(r"\d+", "1 apple, 2 bananas, 3 pears")
# → ["1", "2", "3"]
re.sub (pattern, repl, string)

Substitui correspondências por repl

Python reseguro
Exemplo prático
re.sub(r"\s+", " ", "too  many   spaces")
# → "too many spaces"
re.sub(r"(\w+)", r"[\1]", "hello world")
# → "[hello] [world]" (referência retroativa)
re.split (pattern, string)

Divide uma string nas correspondências do padrão

Python reseguro
Exemplo prático
re.split(r"[,;\s]+", "a, b; c  d")
# → ["a", "b", "c", "d"]
re.compile (pattern, flags)

Compila um padrão para reutilização

Python reseguro
Exemplo prático
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
for line in lines:
    if EMAIL.search(line): ...

Flags

4 comandos
re.IGNORECASE

Busca sem diferenciar maiúsculas de minúsculas

Flagsseguro
Exemplo prático
re.findall(r"hello", text, re.I)
re.compile(r"hello", re.IGNORECASE)
re.MULTILINE

^ e $ correspondem ao início e ao fim de cada linha

Flagsseguro
Exemplo prático
re.findall(r"^\w+", text, re.M)
re.DOTALL

O ponto (.) também corresponde à quebra de linha

Flagsseguro
Exemplo prático
re.search(r"<div>.+?</div>", html, re.S)
re.VERBOSE

Permite comentários no padrão (re.X)

Flagsseguro
Exemplo prático
pattern = re.compile(r"""
    \d{4}  # ano
    -
    \d{2}  # mês
""", re.X)

Padrões prontos

5 comandos

Email

[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}

Padrão simples com formato de e-mail; não é um validador completo

Padrões prontosseguro
Exemplo prático
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}

URL

https?://[\w/:%#$&?()~.=+\-]+

Padrão simples de URL HTTP/HTTPS; não é um analisador completo de URLs

Padrões prontosseguro
Exemplo prático
https?://[\w/:%#$&?()~.=+\-]+

IPv4

\b(?:\d{1,3}\.){3}\d{1,3}\b

Padrão com formato IPv4; não verifica os intervalos dos octetos (0–255)

Padrões prontosseguro
Exemplo prático
\b(?:\d{1,3}\.){3}\d{1,3}\b

Data ISO

\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b

Padrão no formato YYYY-MM-DD; não verifica a validade da data no calendário

Padrões prontosseguro
Exemplo prático
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b

Telefone italiano

(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}

Padrão simplificado de telefone italiano; não confirma se o número é válido ou foi atribuído

Padrões prontosseguro
Exemplo prático
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}

Como usar este guia de expressões regulares

Posso testar expressões regulares do Python aqui?

O testador executa JavaScript RegExp. Sintaxe específica do Python, como (?P<name>...) e re.VERBOSE, deve ser testada no Python. Os padrões prontos ilustram formatos e não fazem validação completa.

Posso imprimir este guia em PDF?

Use Imprimir PDF. A versão para impressão inclui todos os comandos e exemplos práticos, inclusive as seções ocultas por uma pesquisa.

Posso usar o site localmente?

Sim. Sirva os arquivos estáticos com um servidor HTTP local. Pesquisa, filtros e cópia funcionam no navegador; o testador Regex precisa de um contexto HTTP que permita workers.