Expressões regulares

Classes, âncoras, quantificadores, alternância, capturas, referências, lookaround e backtracking.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Ler o padrão

Pesquisar tolera texto à volta; validar exige prender as pontas (^...$, ou \A...\z em PCRE).

PeçaCasa com
[abc], [^0-9]Um caráter dentro, ou fora, do conjunto
.Um caráter, em geral sem quebra de linha
\d, \w, \sDígito, palavra, espaço (conforme o motor)
^, $, \bPosição, não caráter
?, *, +, {3}, {2,4}Quantidades sobre a peça anterior
a|bUma das alternativas
(ab) / (?:ab)Grupo com / sem captura
  • ab+ repete b; (ab)+ repete o par. ^LTW|BD$ prende cada alternativa de um lado; ^(?:LTW|BD)$ prende ambas.
  • [A-Za-z] não cobre acentos; Unicode depende do motor.

Formato com captura

'LTW-042'.match(/^(?:LTW|BD)-([0-9]{3})$/);
// [0] LTW-042, [1] 042
  • LTW-42 falha a repetição; xLTW-042 falha a âncora. Formato válido não prova existência no catálogo nem data real (2026-02-31 tem forma certa).
  • \1 no padrão repete o texto capturado (/(\w+)\s+\1/ casa rede rede, não rede web). $1 usa-o na substituição.

Guloso contra preguiçoso

Em preço [12] e [35]: \[.*\] casa [12] e [35]; \[.*?\] e \[[^\]]*\] casam [12].

  • Guloso consome o máximo e recua; preguiçoso consome o mínimo e expande. Ambos partem da primeira posição viável.
  • Classe negada nunca atravessa o delimitador. Nenhum dos três substitui um parser de HTML.

Contexto e custo

  • Lookaround testa sem consumir: livro(?=s) / (?!s) à frente; (?<=EUR ) atrás (compatibilidade varia).
  • Backtracking tenta alternativas quando o resto falha. (a+)+$ com entrada quase válida pode explodir: limita o comprimento e evita repetições ambíguas em dados do cliente.
  • Capturas com referência já não são “regulares” no sentido de autómatos finitos.

Por motor

  • JS: test booleano; exec/match sem g com capturas; com g só correspondências; matchAll com g para capturas de todas. Regex com g guarda lastIndex: o mesmo /a/g dá true e depois false em test repetido.
  • PHP: delimitadores PCRE; preg_match dá 1, 0 ou false (erro). preg_match_all extrai todas; preg_replace substitui com $1.
  • HTML: pattern sem barras, testa o valor completo; junta required para obrigar preenchimento. Servidor valida sempre de novo.

Explicação completa.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.