Reguläre Ausdrücke in Kotlin mit Beispielen: in der Praxis

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Reguläre Ausdrücke in Kotlin mit Beispielen: in der Praxis



Reguläre Ausdrücke (regex) sind ein leistungsstarkes Werkzeug für die Textverarbeitung, mit dem Sie Zeichenfolgen nach einem Muster suchen, ersetzen und validieren können. In Kotlin wird die Arbeit mit regulären Ausdrücken über die Klasse Regex und eine Reihe praktischer Erweiterungsfunktionen realisiert. In diesem Artikel werden wir die Syntax, die wichtigsten Methoden und praktische Beispiele besprechen, die Ihnen helfen, regex in Kotlin schnell zu meistern.



1. Grundlagen der Arbeit mit der Regex-Klasse



In Kotlin wird ein regulärer Ausdruck mit der Klasse Regex erstellt. Das Muster kann als Zeichenfolge oder mit einem Raw-String (dreifache Anführungszeichen """) angegeben werden, was besonders praktisch ist, um Backslashes nicht escapen zu müssen.



// Normale Zeichenfolgeval pattern1 = Regex("\\\\d+")  // eine oder mehrere Ziffern

// Raw-String (empfohlen)val pattern2 = Regex("""\\d+""") // das Gleiche, aber ohne Escaping


Die Klasse Regex akzeptiert auch optionale Flags, z. B. RegexOption.IGNORE_CASE für die Groß-/Kleinschreibung unabhängige Suche.



val caseInsensitive = Regex("""hello""", RegexOption.IGNORE_CASE)


2. Wichtigste Methoden: match, find, replace



Kotlin bietet mehrere Schlüsselmethoden für die Arbeit mit regulären Ausdrücken. Betrachten wir die gängigsten.



2.1. Methode matchEntire (vollständige Übereinstimmung)

Prüft, ob die gesamte Zeichenfolge dem Muster entspricht. Gibt MatchResult? oder null zurück.



val regex = Regex("""\\d{3}-\\d{2}-\\d{4}""")val text = "123-45-6789"val matchResult = regex.matchEntire(text)println(matchResult?.value) // Ausgabe: 123-45-6789

// Wenn die Zeichenfolge nicht dem Muster entsprichtval badText = "123-45-678"println(regex.matchEntire(badText)) // Ausgabe: null


2.2. Methode find (erste Übereinstimmung)

Sucht das erste Vorkommen des Musters in der Zeichenfolge. Gibt MatchResult? zurück.



val regex = Regex("""\\d+""")val text = "Preis: 150 Rubel, Rabatt: 30%"val firstMatch = regex.find(text)println(firstMatch?.value) // Ausgabe: 150


2.3. Methode findAll (alle Übereinstimmungen)

Findet alle nicht überlappenden Vorkommen des Musters. Gibt eine Sequenz von MatchResult zurück.



val regex = Regex("""\\d+""")val text = "Preis: 150 Rubel, Rabatt: 30%"val allMatches = regex.findAll(text)allMatches.forEach { println(it.value) }// Ausgabe:// 150// 30


2.4. Methode replace (Ersetzung)

Ersetzt alle Vorkommen des Musters durch die angegebene Zeichenfolge oder das Ergebnis eines Lambdas.



val regex = Regex("""\\d+""")val text = "ID: 12345, Code: 67890"val result = regex.replace(text, "***")println(result) // Ausgabe: ID: ***, Code: ***

// Ersetzung mit Lambda (dynamische Ersetzung)val dynamicResult = regex.replace(text) { matchResult -> "[" + matchResult.value.toInt().toString() + "]"}println(dynamicResult) // Ausgabe: ID: [12345], Code: [67890]


3. Erfassungsgruppen (capturing groups)



Erfassungsgruppen ermöglichen das Extrahieren von Teilen der Übereinstimmung. In Kotlin kann auf Gruppen über den Index oder den Namen (falls angegeben) zugegriffen werden.



3.1. Zugriff über Index

val regex = Regex("""(\\d{2})\\.(\\d{2})\\.(\\d{4})""") // Datum im Format TT.MM.JJJJval text = "Heute: 15.03.2024"val match = regex.find(text)if (match != null) {    val (day, month, year) = match.destructured    println("Tag: $day, Monat: $month, Jahr: $year")    // Ausgabe: Tag: 15, Monat: 03, Jahr: 2024}


3.2. Benannte Gruppen

In Kotlin können benannte Gruppen verwendet werden (Syntax (?<name>...)).



val regex = Regex("""(?<username>\\w+)@(?<domain>\\w+\\.\\w+)""")val text = "email: user@example.com"val match = regex.find(text)if (match != null) {    val username = match.groups["u                

Blogs

Buchempfehlungen