regex em Rust: guia completo com exemplos práticos

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Biblioteca regex para Rust: guia completo

1. O que é e para que serve

A biblioteca regex é a ferramenta padrão e mais popular para trabalhar com expressões regulares na linguagem Rust. Ela oferece um motor poderoso, seguro e de alto desempenho para buscar, extrair e substituir texto com base em padrões. Diferente de muitas outras implementações, o regex em Rust foi projetado com foco em segurança de memória (memory safety) e ausência de comportamento indefinido (undefined behavior), algo essencial para programação de sistemas.

Para que serve? Expressões regulares são uma linguagem universal para descrever padrões de texto. Com elas, é possível resolver uma enorme variedade de problemas: validação de e-mails e URLs, análise de logs, extração de dados de HTML/JSON, busca e substituição em código, interpretação de entrada do usuário e muito mais. A biblioteca regex faz isso de forma rápida e confiável. Ela usa um algoritmo baseado em autômatos (Thompson NFA), que garante tempo de execução linear em relação ao tamanho da string de entrada, protegendo contra "catastrophic backtracking", comum em outros motores (como PCRE ou o módulo re do Python).

Principais recursos da biblioteca: suporte completo à sintaxe de expressões regulares (âncoras, quantificadores, grupos, lookahead/lookbehind, Unicode), trabalho com sequências arbitrárias de bytes, possibilidade de compilar a expressão uma vez e reutilizá-la várias vezes, além de suporte a iteradores para buscar todas as ocorrências. A biblioteca faz parte do ecossistema Rust e é ativamente mantida pela comunidade.

2. Instalação

Para instalar a biblioteca regex, use o gerenciador de pacotes cargo, que já vem com o Rust. Você precisa adicionar a dependência no arquivo Cargo.toml do seu projeto.

Comando exato para adicionar pelo terminal:

cargo add regex

Ou adicione manualmente na seção [dependencies] do arquivo Cargo.toml:

[dependencies]
regex = "1"

Depois, execute cargo build para baixar e compilar a biblioteca. A versão "1" indica que será usada a versão estável mais recente da série 1.x.

3. Início rápido — exemplo mínimo funcional

Vamos escrever um programa simples que verifica se uma string contém a palavra "hello" (ignorando maiúsculas/minúsculas).

use regex::Regex;

fn main() {
    // Compila a expressão regular
    // (?i) — flag que ignora diferença entre maiúsculas e minúsculas
    let re = Regex::new(r"(?i)hello").unwrap();

    // Texto para buscar
    let text = "Hello, world!";

    // Verifica se há correspondência
    if re.is_match(text) {
        println!("Correspondência encontrada!");
    } else {
        println!("Nenhuma correspondência.");
    }
}

Este código exibirá: Correspondência encontrada!. Observe o uso de .unwrap() — aqui usado por simplicidade, mas em código real você deve tratar erros de compilação da expressão regular (por exemplo, se o padrão for inválido).

4. Métodos principais

Abaixo estão os principais métodos e funções da biblioteca regex. Todos os exemplos assumem que você tem o import use regex::Regex;.

4.1. Regex::new(pattern: &str) -> Result<Regex, Error>

O que faz: Compila a string pattern em uma expressão regular. Retorna um Result que deve ser tratado em caso de erro de sintaxe.

let re = Regex::new(r"^\d{3}-\d{2}-\d{4}$").expect("Regex inválido");
// re agora está pronto para uso

4.2. is_match(&self, text: &str) -> bool

O que faz: Verifica se há

Recommendations