Reguläre Ausdrücke werden verwendet, um nach Text zu suchen und fortgeschrittenere Textbearbeitungen durchzuführen. Reguläre Ausdrücke sind ein grundlegender Bestandteil fast jeder Programmiersprache und Kotlin ist da keine Ausnahme. In Kotlin wird die Unterstützung für reguläre Ausdrücke durch die Regex-Klasse bereitgestellt. Ein Objekt dieser Klasse stellt einen regulären Ausdruck dar, der für String-Matching-Zwecke verwendet werden kann.

Wir können problemlos reguläre Ausdrücke in verschiedenen Arten von Software verwenden, von einfachsten bis hin zu unglaublich komplexen Anwendungen.

Regulärer Ausdruck
von Kotlin In Kotlin erstellen wir reguläre Ausdrücke mit Regex.

Regex("pen")
"pen".toRegex()
Regex.fromLiteral("pen")

Ein Muster definiert den Text, nach dem wir suchen oder den wir bearbeiten müssen. Es besteht aus Textliteralen und Metazeichen. Metazeichen sind Sonderzeichen, die die Auswertung des regulären Ausdrucks steuern. Beispielsweise suchen wir mit \s nach Leerzeichen.

In Kotlin sind einige der Regex-Muster in der folgenden Tabelle aufgeführt.

MusterKonzeptBeispiel
^Gleicht das erste Zeichen der Zeichenfolge mit dem angegebenen Zeichen ab^x
$Gleicht das letzte Zeichen der Zeichenfolge mit dem angegebenen Zeichen abx$
.Dieses Muster entspricht jedem einzelnen Zeichen.ab.
|Dies ist als Alternations-/ODER-Operator bekannt. Dies kombiniert zwei oder mehr Muster.^ x | ein$
?Dies entspricht höchstens einmal dem Vorkommen des vorherigen Zeichens.ab?
+Dies stimmt mindestens einmal mit dem Vorkommen des vorherigen Zeichens überein.abc+
*Dies stimmt mit dem Vorkommen des vorherigen Zeichens null oder mehrmals überein.xyz*
[pqr]Dies stimmt mit jedem einzelnen Zeichen überein, das im Satz vorhanden ist.[pqr]
[ip]Dies entspricht jedem einzelnen Zeichen innerhalb des Bereichs.[ip]
[^fsd]Dies impliziert Negation. Es stimmt mit jedem Zeichen außer den angegebenen überein.[^fsd]
\SDies ist die Zeichenklasse, die mit Leerzeichen übereinstimmt.\\s+ (entspricht einem oder mehreren Leerzeichen)
\wDies ist die Zeichenklasse, die jedem Zeichen entspricht, das ein Wort bildet.\\w

Hinweis: - Zuerst müssen wir ein Muster erstellen, dann können wir eine der Funktionen verwenden, um das Muster auf eine Textzeichenfolge anzuwenden. Zu den Funktionen gehören find(), findall(), replace() und split().

Kotlin-Methode find()

Es gibt die erste Übereinstimmung eines regulären Ausdrucks in der Eingabe zurück, beginnend beim angegebenen Startindex. In Kotlin ist der Standard-Startindex 0.

Kotlin-Programm zur Verwendung der Find-Methode –

fun main(args : Array<String>) {
  
    val company = "GeeksforGeeks : A computer science portal for students"
  
    val pattern = "science".toRegex()
  
    val found = pattern.find(company)
  
    val m = found?.value
    val index = found?.range
  
    println("$m found at indexes: $index")
  
}

Ausgabe:

science found at indexes: 27..33

Kotlin-Methode findAll()

Es gibt eine Folge aller Vorkommen eines regulären Ausdrucks innerhalb der angegebenen Eingabezeichenfolge zurück.

Kotlin-Programm zur Verwendung der findAll-Methode –

fun main(args : Array<String>) {
  
    val company = "GeeksforGeeks"
  
    val pattern = "Geeks".toRegex()
  
    val patt = pattern.findAll(company)
  
    patt.forEach { f ->
        val m = f.value
        val index = f.range
        println("$m indexes are: $index")
     }
}

Ausgabe:

Geeks indexes are: 0..4
Geeks indexes are: 8..1

Das Punkt(.)-Metazeichen

Das Metazeichen Punkt (.) steht für jedes einzelne Zeichen im Text.
Kotlin-Programm –

fun main(args : Array<String>) {
  
    val names = listOf("GeeksforGeeks", "GeekyAnts", "McGeek")
  
    val pattern = "..Geek".toRegex()
  
    names.forEach { name ->
        if (pattern.containsMatchIn(name)) {
            println("$name matches")
  
        }
    }
}

Ausgabe:

GeeksforGeeks matches
McGeek matches