Die regex-Bibliothek für Rust: Ein vollständiger Leitfaden
1. Was ist das und wozu braucht man es?
Die regex-Bibliothek ist das Standardwerkzeug und die beliebteste Lösung für die Arbeit mit regulären Ausdrücken in Rust. Sie bietet eine leistungsstarke, sichere und hochperformante Engine zum Suchen, Extrahieren und Ersetzen von Text anhand von Mustern. Im Gegensatz zu vielen anderen Implementierungen wurde regex in Rust mit besonderem Fokus auf Speichersicherheit (Memory Safety) und die Vermeidung von undefiniertem Verhalten (Undefined Behavior) entwickelt – ein entscheidender Vorteil für die Systemprogrammierung.
Wozu braucht man sie? Reguläre Ausdrücke sind eine universelle Sprache zur Beschreibung von Textmustern. Mit ihnen lassen sich unzählige Aufgaben lösen: Validierung von E-Mail-Adressen und URLs, Log-Parsing, Datenextraktion aus HTML/JSON, Suchen und Ersetzen in Code, Analyse von Benutzereingaben und vieles mehr. Die regex-Bibliothek erledigt das schnell und zuverlässig. Sie verwendet einen automatenbasierten Algorithmus (Thompson NFA), der eine lineare Laufzeit in Bezug auf die Länge der Eingabezeichenfolge garantiert. Das schützt vor "katastrophalem Backtracking" (Catastrophic Backtracking), das bei anderen Engines (z. B. PCRE oder Python's re) auftreten kann.
Wichtige Funktionen der Bibliothek: vollständige Unterstützung der Syntax regulärer Ausdrücke (Anker, Quantoren, Gruppen, Lookahead/Lookbehind, Unicode), Arbeit mit beliebigen Byte-Sequenzen, einmalige Kompilierung und mehrfache Wiederverwendung von Ausdrücken sowie Unterstützung von Iteratoren zum Finden aller Treffer. Die Bibliothek ist ein fester Bestandteil des Rust-Ökosystems und wird von der Community aktiv gepflegt.
2. Installation
Zur Installation der regex-Bibliothek wird der Paketmanager cargo verwendet, der in Rust integriert ist. Sie müssen die Abhängigkeit in der Cargo.toml-Datei Ihres Projekts hinzufügen.
Der genaue Befehl zum Hinzufügen über das Terminal:
cargo add regex
Oder fügen Sie manuell im Abschnitt [dependencies] der Cargo.toml-Datei hinzu:
[dependencies]
regex = "1"
Führen Sie anschließend cargo build aus, um die Bibliothek herunterzuladen und zu kompilieren. Die Version "1" bedeutet, dass die neueste stabile Version aus der 1.x-Reihe verwendet wird.
3. Schnellstart – ein minimales Arbeitsbeispiel
Schreiben wir ein einfaches Programm, das prüft, ob eine Zeichenfolge das Wort "hello" enthält (Groß-/Kleinschreibung wird ignoriert).
use regex::Regex;
fn main() {
// Regulären Ausdruck kompilieren
// (?i) — Flag, das die Groß-/Kleinschreibung deaktiviert
let re = Regex::new(r"(?i)hello").unwrap();
// Zu durchsuchender Text
let text = "Hello, world!";
// Prüfen, ob ein Treffer vorliegt
if re.is_match(text) {
println!("Treffer gefunden!");
} else {
println!("Keine Treffer.");
}
}
Dieser Code gibt Folgendes aus: Treffer gefunden!. Beachten Sie das .unwrap() – es wird hier der Einfachheit halber verwendet. In echtem Code sollten Sie Fehler bei der Kompilierung des regulären Ausdrucks behandeln (z. B. wenn das Muster ungültig ist).
4. Wichtige Methoden
Nachfolgend sind die wichtigsten Methoden und Funktionen der regex-Bibliothek aufgeführt. Alle Beispiele setzen voraus, dass Sie den Import use regex::Regex; haben.
4.1. Regex::new(pattern: &str) -> Result<Regex, Error>
Funktion: Kompiliert die Zeichenfolge pattern in einen regulären Ausdruck. Gibt ein Result zurück, das im Falle eines Syntaxfehlers behandelt werden muss.
let re = Regex::new(r"^\d{3}-\d{2}-\d{4}$").expect("Ungültiger Regex");
// re ist jetzt einsatzbereit
4.2. is_match(&self, text: &str) -> bool
Funktion: Prüft, ob es im text ein
Auch in der Bibliothek
Generierung von PDF-Berichten in Go (Golang): Bibliotheken und Beispiele
Aufgabenwarteschlangen für Rust: Überblick über beliebte Bibliotheken und Tools
Maschinelles Lernen mit Swift: Core ML, Create ML, TensorFlow Swift und Turi Create
Swagger/OpenAPI-Generierung für JavaScript (Node.js) — Werkzeuge und Bibliotheken
multierr Go: vollständige Anleitung mit Beispielen