^
Início da linha ou string
Exemplo prático
^Hello # corresponde a "Hello world", mas não a "say Hello"
referência para desenvolvimento
Teste expressões regulares no navegador e consulte exemplos com pesquisa, cópia e impressão em PDF.
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.
35 comandos visíveis
^
Início da linha ou string
^Hello # corresponde a "Hello world", mas não a "say Hello"
$
Fim da linha ou string
world$ # corresponde a "Hello world", mas não a "world class"
\b
Limite de palavra: transição entre caractere de palavra e outro tipo
\bcat\b # "cat", mas não "catch" nem "concat"
\B
Posição que não é um limite de palavra
\Bcat\B # "concatenate", mas não " cat "
*
Zero ou mais vezes (guloso)
ab*c # "ac", "abc", "abbc", "abbbc"…
+
Uma ou mais vezes (guloso)
ab+c # "abc", "abbc", mas NÃO "ac"
?
Zero ou uma vez (opcional)
colou?r # "color" e "colour"
{n,m}
Entre n e m vezes
\d{2,4} # 2, 3 ou 4 dígitos
\d{3} # exatamente 3 dígitos
*? +? ??
Versões preguiçosas (não gulosas)
# entrada: "<b>bold</b>"
<.+> # guloso: "<b>bold</b>"
<.+?> # preguiçoso: "<b>" e depois "</b>"
[abc]
Classe de caracteres: um dos caracteres listados
[aeiou] # qualquer vogal
[a-z] # minúsculas de a a z
[A-Za-z0-9]
[^abc]
Negação: qualquer caractere, exceto os listados
[^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
\d # [0-9]
\w # [a-zA-Z0-9_]
\s # [ \t\n\r]
\D \W \S
Abreviações negadas
\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
a.b # "aXb", "a b", "a1b"…
(...)
Grupo de captura: captura a correspondência
(\d{4})-(\d{2})-(\d{2})
# corresponde a "2024-01-15", group(1)="2024"
(?:...)
Grupo sem captura: agrupa sem capturar
(?:Mr|Mrs|Ms)\.\s\w+
# agrupa alternativas sem capturar
(?<name>...)
Grupo nomeado: captura com um nome
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
cat|dog # "cat" ou "dog"
(https?|ftp)://
(?=...) (?!...)
Lookahead positivo e negativo
\d+(?= euro) # número seguido de " euro" (não captura " euro")
\d+(?! euro) # número NÃO seguido de " euro"
(?<=...) (?<!...)
Lookbehind positivo e negativo
(?<=\$)\d+ # número precedido de "$"
re.search (pattern, string)
Encontra a primeira ocorrência em qualquer posição
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
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
re.findall(r"\d+", "1 apple, 2 bananas, 3 pears")
# → ["1", "2", "3"]
re.sub (pattern, repl, string)
Substitui correspondências por repl
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
re.split(r"[,;\s]+", "a, b; c d")
# → ["a", "b", "c", "d"]
re.compile (pattern, flags)
Compila um padrão para reutilização
EMAIL = re.compile(r"[\w.+-]+@[\w-]+\.[\w.]+")
for line in lines:
if EMAIL.search(line): ...
re.IGNORECASE
Busca sem diferenciar maiúsculas de minúsculas
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
re.findall(r"^\w+", text, re.M)
re.DOTALL
O ponto (.) também corresponde à quebra de linha
re.search(r"<div>.+?</div>", html, re.S)
re.VERBOSE
Permite comentários no padrão (re.X)
pattern = re.compile(r"""
\d{4} # ano
-
\d{2} # mês
""", re.X)
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
Padrão simples com formato de e-mail; não é um validador completo
[\w.+-]+@[\w-]+\.[a-zA-Z]{2,}
https?://[\w/:%#$&?()~.=+\-]+
Padrão simples de URL HTTP/HTTPS; não é um analisador completo de URLs
https?://[\w/:%#$&?()~.=+\-]+
\b(?:\d{1,3}\.){3}\d{1,3}\b
Padrão com formato IPv4; não verifica os intervalos dos octetos (0–255)
\b(?:\d{1,3}\.){3}\d{1,3}\b
\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
\b\d{4}-(?:0[1-9]|1[0-2])-(?:0[1-9]|[12]\d|3[01])\b
(?:\+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
(?:\+39)?[\s-]?(?:0\d{1,4}|3\d{2})[\s-]?\d{6,8}
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.
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.
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.