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.
Aussi dans la bibliothèque
PhotosUI pour Swift : guide complet avec exemples
Jetons JWT en C# (.NET) : travailler avec System.IdentityModel.Tokens.Jwt
Conteneur d'injection de dépendances pour JavaScript (Node.js) — Awilix