Reguläre Ausdrücke in der Sprache Go

Ein regulärer Ausdruck (kurz regex oder regexp) ist ein leistungsstarkes Werkzeug zum Abgleichen von Zeichenketten.

Reguläre Ausdrücke definieren ein Muster, mit dem schnell Zeichenketten gesucht, ersetzt oder extrahiert werden können, die zu diesem Muster passen. Für Details sieheTutorial zu regulären Ausdrücken。

In Go werden reguläre Ausdrücke über dasregexpMit dem Paket implementieren.


In der Sprache GoregexpPaket

Die Go-Standardbibliothek bietetregexpPaket, das zum Verarbeiten regulärer Ausdrücke verwendet wird. Die folgendenregexpHäufig verwendete Funktionen und Methoden im Paket:

  1. CompileundMustCompile
    Wird zum Kompilieren regulärer Ausdrücke verwendet.Compilegibt ein*Regexpein Objekt und einen Fehler, währendMustCompilelöst direkt einen Panic aus, wenn die Kompilierung fehlschlägt.

  2. MatchString
    Prüft, ob eine Zeichenkette mit einem regulären Ausdruck übereinstimmt.

  3. FindStringundFindAllString
    Wird verwendet, um übereinstimmende Zeichenketten zu finden.FindStringGibt den ersten Treffer zurück,FindAllStringGibt alle Treffer zurück.

  4. ReplaceAllString
    Wird verwendet, um übereinstimmende Zeichenketten zu ersetzen.

  5. Split
    Teilt Zeichenketten basierend auf dem regulären Ausdruck auf.


Grundlegende Syntax regulärer Ausdrücke

Im Folgenden sind einige häufig verwendete Syntaxformen für reguläre Ausdrücke aufgeführt:

  • .: stimmt mit jedem einzelnen Zeichen überein (außer Zeilenumbruch).
  • *: stimmt mit dem vorhergehenden Zeichen 0 oder mehr Mal überein.
  • +: stimmt mit dem vorhergehenden Zeichen 1 oder mehr Mal überein.
  • ?: stimmt mit dem vorhergehenden Zeichen 0 oder 1 Mal überein.
  • \d: stimmt mit Ziffernzeichen überein (äquivalent zu[0-9])。
  • \w: stimmt mit Buchstaben, Ziffern oder Unterstrichen überein (äquivalent zu[a-zA-Z0-9_])。
  • \s: stimmt mit Leerraumzeichen überein (einschließlich Leerzeichen, Tabs, Zeilenumbrüche usw.).
  • []: stimmt mit einem beliebigen Zeichen innerhalb der Klammern überein (z. B.[abc]Treffera、boderc)。
  • ^: stimmt mit dem Anfang der Zeichenkette überein.
  • $: stimmt mit dem Ende der Zeichenkette überein.

Beispielcode

Im Folgenden finden Sie einige Beispiele für die Verwendung regulärer Ausdrücke in Go:

Beispiel 1: Prüfen, ob eine Zeichenkette mit einem regulären Ausdruck übereinstimmt

Beispiel

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `^[a-zA-Z0-9]+$`
    regex := regexp.MustCompile(pattern)

    str := "Hello123"
    if regex.MatchString(str) {
        fmt.Println("String stimmt mit dem regulären Ausdruck überein")
    } else {
        fmt.Println("String stimmt nicht mit dem regulären Ausdruck überein")
    }
}

Beispiel 2: Übereinstimmende Strings finden

Beispiel

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `\d+`
    regex := regexp.MustCompile(pattern)

    str := "Ich habe 3 Äpfel und 5 Bananen"
    matches := regex.FindAllString(str, -1)
    fmt.Println("Gefundene Zahlen:", matches)
}

Beispiel 3: Übereinstimmende Strings ersetzen

Beispiel

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `\s+`
    regex := regexp.MustCompile(pattern)

    str := "Hallo Welt"
    result := regex.ReplaceAllString(str, " ")
    fmt.Println("Ersetzte Zeichenkette:", result)
}

Beispiel 4: Zeichenketten aufteilen

Beispiel

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `,`
    regex := regexp.MustCompile(pattern)

    str := "apple,banana,orange"
    parts := regex.Split(str, -1)
    fmt.Println("Zeichenkette nach dem Aufteilen:", parts)
}

Hinweise

  1. Leistungsprobleme
    Operationen zum Abgleichen und Ersetzen regulärer Ausdrücke können erhebliche Ressourcen verbrauchen, insbesondere bei der Verarbeitung großer Datenmengen. Es wird empfohlen, sie in leistungssensiblen Szenarien mit Vorsicht zu verwenden.

  2. Escape-Zeichen
    In Go müssen Backslashes in regulären Ausdrücken\als\\geschrieben werden, da der Backslash auch ein Escape-Zeichen in Zeichenketten ist.

  3. Fehlerbehandlung
    NutzungCompileFunktion, achten Sie darauf, den zurückgegebenen Fehler zu prüfen, um Programmabstürze zu vermeiden.

Weitere Erweiterungen