Regex Rust : guide complet avec exemples pratiques

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Bibliothèque regex pour Rust : guide complet

1. Qu'est-ce que c'est et pourquoi l'utiliser ?

La bibliothèque regex est l'outil standard et le plus populaire pour travailler avec les expressions régulières en Rust. Elle fournit un moteur puissant, sûr et performant pour rechercher, extraire et remplacer du texte selon des motifs. Contrairement à de nombreuses autres implémentations, regex en Rust est conçue avec un accent sur la sécurité mémoire (memory safety) et l'absence de comportement indéfini (undefined behavior), ce qui est crucial pour la programmation système.

Pourquoi l'utiliser ? Les expressions régulières sont un langage universel pour décrire des motifs textuels. Elles permettent de résoudre une vaste gamme de problèmes : validation d'adresses email et d'URL, analyse de logs, extraction de données depuis du HTML/JSON, recherche et remplacement dans du code, analyse de saisies utilisateur, et bien plus encore. La bibliothèque regex le fait rapidement et de manière fiable. Elle utilise un algorithme basé sur des automates (Thompson NFA), garantissant un temps d'exécution linéaire par rapport à la longueur de la chaîne d'entrée, ce qui protège du "repli catastrophique" (catastrophic backtracking) propre à d'autres moteurs (comme PCRE ou le module re de Python).

Caractéristiques clés de la bibliothèque : prise en charge complète de la syntaxe des expressions régulières (ancres, quantificateurs, groupes, lookahead/lookbehind, Unicode), travail avec des séquences d'octets arbitraires, possibilité de compiler une expression une fois et de la réutiliser, ainsi que la prise en charge d'itérateurs pour trouver toutes les correspondances. La bibliothèque fait partie de l'écosystème Rust et est activement maintenue par la communauté.

2. Installation

Pour installer la bibliothèque regex, on utilise le gestionnaire de paquets cargo, inclus dans Rust. Vous devez ajouter la dépendance dans le fichier Cargo.toml de votre projet.

Commande exacte pour ajouter via le terminal :

cargo add regex

Ou ajoutez manuellement dans la section [dependencies] du fichier Cargo.toml :

[dependencies]
regex = "1"

Ensuite, exécutez cargo build pour télécharger et compiler la bibliothèque. La version "1" signifie que la dernière version stable de la série 1.x sera utilisée.

3. Démarrage rapide — exemple minimal fonctionnel

Écrivons un programme simple qui vérifie si une chaîne contient le mot "hello" (insensible à la casse).

use regex::Regex;

fn main() {
    // Compilation de l'expression régulière
    // (?i) — indicateur insensible à la casse
    let re = Regex::new(r"(?i)hello").unwrap();

    // Chaîne à analyser
    let text = "Hello, world!";

    // Vérification de la présence d'une correspondance
    if re.is_match(text) {
        println!("Correspondance trouvée !");
    } else {
        println!("Aucune correspondance.");
    }
}

Ce code affichera : Correspondance trouvée !. Notez l'utilisation de .unwrap() — utilisé ici par simplicité, mais dans du code réel, il faut gérer les erreurs de compilation de l'expression régulière (par exemple, si le motif est incorrect).

4. Méthodes principales

Voici les méthodes et fonctions clés de la bibliothèque regex. Tous les exemples supposent que vous avez l'import use regex::Regex;.

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

Fonction : Compile la chaîne pattern en une expression régulière. Renvoie un Result à traiter en cas d'erreur de syntaxe.

let re = Regex::new(r"^\d{3}-\d{2}-\d{4}$").expect("Regex invalide");
// re est maintenant prêt à être utilisé

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

Fonction : Vérifie s'il y a une correspondance dans le texte.

Recommendations