0Pricing
C++ Academy · Aula

Noções básicas de regex

Faça correspondência de padrões em textos

Noções básicas de regex é uma aula grátis de C++ Academy no CoddyKit. Esta é a aula 1 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C++ Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C++ Academy inclui 4 aulas no total.

O que é <regex>?

O cabeçalho <regex> permite comparar texto com padrões de expressões regulares que descrevem conjuntos de cadeias de caracteres. Você cria um padrão e depois testa ou pesquisa o texto com ele.

  • std::regex armazena um padrão compilado.
  • As funções de correspondência informam se o texto se encaixa no padrão.
#include <iostream>
#include <regex>

int main() {
    std::regex pattern("hello");
    std::cout << std::boolalpha << std::regex_match("hello", pattern) << '\n';
    return 0;
}

regex_match versus regex_search

regex_match exige que a cadeia inteira corresponda ao padrão. regex_search tem sucesso se o padrão aparecer em qualquer posição da cadeia.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat");
    std::string s = "the cat sat";
    std::cout << std::boolalpha;
    std::cout << "match: " << std::regex_match(s, p) << '\n';
    std::cout << "search: " << std::regex_search(s, p) << '\n';
    return 0;
}

Classes de caracteres

Colchetes definem um conjunto de caracteres permitidos. [aeiou] corresponde a qualquer vogal individual; intervalos como [a-z] correspondem a letras minúsculas.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[a-z]+");
    std::cout << std::boolalpha << std::regex_match("hello", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Quantificadores

Os quantificadores controlam a repetição: * significa zero ou mais ocorrências, + uma ou mais, ? opcional e {n,m} um intervalo de contagem.

#include <iostream>
#include <regex>

int main() {
    std::regex p("a+b");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("aaab", p) << '\n';
    std::cout << std::regex_match("b", p) << '\n';
    return 0;
}

Classes predefinidas

Classes abreviadas evitam digitação: \\d corresponde a um dígito, \\w a um caractere de palavra e \\s a um espaço em branco. No código-fonte C++, a barra invertida é duplicada.

#include <iostream>
#include <regex>

int main() {
    std::regex p("\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("12345", p) << '\n';
    std::cout << std::regex_match("12a45", p) << '\n';
    return 0;
}

Âncoras

Âncoras fixam uma correspondência a uma posição: ^ marca o início e $ o fim do texto. Elas correspondem a posições, não a caracteres.

#include <iostream>
#include <regex>

int main() {
    std::regex p("^abc$");
    std::cout << std::boolalpha;
    std::cout << std::regex_search("abc", p) << '\n';
    std::cout << std::regex_search("xabc", p) << '\n';
    return 0;
}

Alternância

O caractere de barra vertical | significa “ou”. O padrão cat|dog corresponde a qualquer uma das duas palavras. Use parênteses para limitar o escopo.

#include <iostream>
#include <regex>

int main() {
    std::regex p("cat|dog");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("cat", p) << '\n';
    std::cout << std::regex_match("dog", p) << '\n';
    std::cout << std::regex_match("fish", p) << '\n';
    return 0;
}

Escape de caracteres especiais

Caracteres como ., * e ( têm um significado especial. Use uma barra invertida para fazer o escape deles e corresponder literalmente a esses caracteres.

#include <iostream>
#include <regex>

int main() {
    std::regex p("3\\.14");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("3.14", p) << '\n';
    std::cout << std::regex_match("3x14", p) << '\n';
    return 0;
}

Correspondência sem distinção entre maiúsculas e minúsculas

Passe um sinalizador como std::regex::icase ao construir o padrão para ignorar a distinção entre maiúsculas e minúsculas durante a correspondência.

#include <iostream>
#include <regex>

int main() {
    std::regex p("hello", std::regex::icase);
    std::cout << std::boolalpha;
    std::cout << std::regex_match("HELLO", p) << '\n';
    std::cout << std::regex_match("Hello", p) << '\n';
    return 0;
}

Uma validação simples

Os padrões são excelentes para validar formatos de entrada, como verificar se uma cadeia se parece com um número básico com sinal opcional.

#include <iostream>
#include <regex>

bool isNumber(const std::string& s) {
    static const std::regex p("-?\\d+");
    return std::regex_match(s, p);
}

int main() {
    std::cout << std::boolalpha;
    std::cout << isNumber("-42") << '\n';
    std::cout << isNumber("4a2") << '\n';
    return 0;
}

Correspondência de várias ocorrências

Combine classes e quantificadores para validar formatos mais elaborados, como uma sequência de letras seguida de dígitos.

#include <iostream>
#include <regex>

int main() {
    std::regex p("[A-Za-z]+\\d+");
    std::cout << std::boolalpha;
    std::cout << std::regex_match("abc123", p) << '\n';
    std::cout << std::regex_match("123abc", p) << '\n';
    return 0;
}

Verificação rápida

Verifique sua compreensão da diferença entre correspondência e pesquisa.

Recapitulação

Você aprendeu os fundamentos de <regex>:

  • regex_match para a cadeia inteira e regex_search para correspondências de partes da cadeia
  • classes de caracteres, quantificadores, âncoras e alternância
  • classes predefinidas, como \\d, e escape de caracteres especiais
  • sinalizadores como icase

Em seguida, você extrairá partes específicas de uma correspondência usando grupos de captura.

Perguntas Frequentes

A aula “Noções básicas de regex” é grátis?

Sim — o texto completo de “Noções básicas de regex” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C++ Academy, atualize para CoddyKit PRO. O curso de C++ Academy inclui 4 aulas no total.

O que vou aprender em “Noções básicas de regex”?

Faça correspondência de padrões em textos Você pratica C++ Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar C++ Academy?

Nenhuma experiência prévia é necessária. C++ Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 1 de 4.

Quanto tempo leva a aula “Noções básicas de regex”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de C++ Academy?

Sim. Cada aula de C++ Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Noções básicas de regex
  2. Grupos de captura
  3. Pesquisa e substituição
  4. Observações sobre desempenho
← Voltar para C++ Academy