Rust:
Usando expressões regulares

Como fazer:

A biblioteca regex de Rust é a indicada para trabalhar com expressões regulares. Para usá-la, você primeiro precisa adicioná-la ao seu Cargo.toml:

[dependencies]
regex = "1"

Então, você pode começar a implementar funcionalidades de regex no seu código Rust. Aqui está como realizar algumas operações comuns:

Correspondendo um Padrão em uma String

use regex::Regex;

fn main() {
    let re = Regex::new(r"^\d{4}-\d{2}-\d{2}$").unwrap();
    let date = "2023-04-15";

    println!("O texto corresponde ao padrão de data? {}", re.is_match(date));
    // Saída: O texto corresponde ao padrão de data? true
}

Encontrando e Acessando Correspondências

use regex::Regex;

fn main() {
    let text = "Rust 2023, C++ 2022, Python 2021";
    let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();

    for cap in re.captures_iter(text) {
        println!("Linguagem: {}, Ano: {}", &cap[1], &cap[2]);
    }
    // Saída:
    // Linguagem: Rust, Ano: 2023
    // Linguagem: C++, Ano: 2022
    // Linguagem: Python, Ano: 2021
}

Substituindo Texto

use regex::Regex;

fn main() {
    let re = Regex::new(r"\b(\w+)\s(\d{4})").unwrap();
    let text = "Rust 2023, C++ 2022, Python 2021";
    let replaced = re.replace_all(text, "$1 foi atualizado em $2");

    println!("Texto atualizado: {}", replaced);
    // Saída: Texto atualizado: Rust foi atualizado em 2023, C++ foi atualizado em 2022, Python foi atualizado em 2021
}

Dividindo Texto Usando um Regex

use regex::Regex;

fn main() {
    let re = Regex::new(r"\W+").unwrap(); // divide em qualquer caractere não-palavra
    let text = "Rust-C++-Python-Go";

    let campos: Vec<&str> = re.split(text).collect();

    for campo in campos {
        println!("Linguagem: {}", campo);
    }
    // Saída:
    // Linguagem: Rust
    // Linguagem: C++
    // Linguagem: Python
    // Linguagem: Go
}

Estes exemplos oferecem um guia básico para começar com expressões regulares em Rust. Conforme suas necessidades se tornam mais sofisticadas, o crate regex oferece uma grande quantidade de funcionalidades para tarefas complexas de correspondência de padrões e manipulação de texto.