Einführung
In diesem Lab wird gezeigt, wie reguläre Ausdrücke in Golang verwendet werden.
This tutorial is from open-source community. Access the source code
💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken
In diesem Lab wird gezeigt, wie reguläre Ausdrücke in Golang verwendet werden.
In diesem Lab müssen Sie den Code vervollständigen, um verschiedene reguläre-Ausdruck-verwandte Aufgaben in Golang durchzuführen.
regexp
-Paket, um reguläre-Ausdruck-verwandte Aufgaben durchzuführen.MatchString
, um zu testen, ob ein Muster einer Zeichenfolge entspricht.Compile
, um eine Regexp
-Struktur zu optimieren.MatchString
, um eine Übereinstimmung wie Compile
zu testen.FindString
, um die Übereinstimmung für den regulären Ausdruck zu finden.FindStringIndex
, um die erste Übereinstimmung zu finden und die Start- und Endindizes für die Übereinstimmung statt des übereinstimmenden Texts zurückzugeben.FindStringSubmatch
, um Informationen für sowohl p([a-z]+)ch
als auch ([a-z]+)
zurückzugeben.FindStringSubmatchIndex
, um Informationen über die Indizes von Übereinstimmungen und Teilübereinstimmungen zurückzugeben.FindAllString
, um alle Übereinstimmungen für einen regulären Ausdruck zu finden.FindAllStringSubmatchIndex
, um auf alle Übereinstimmungen in der Eingabe anzuwenden, nicht nur auf die erste.Match
, um eine Übereinstimmung mit []byte
-Argumenten zu testen und String
aus dem Funktionsnamen zu entfernen.MustCompile
, um globale Variablen mit regulären Ausdrücken zu erstellen.ReplaceAllString
, um Teilmengen von Zeichenfolgen mit anderen Werten zu ersetzen.ReplaceAllFunc
, um das übereinstimmende Text mit einer angegebenen Funktion zu transformieren.## Für eine vollständige Referenz zu Go regulären Ausdrücken überprüfen Sie
## die Dokumentation des [`regexp`](https://pkg.go.dev/regexp)-Pakets.
Hier ist der vollständige Code:
// Go bietet integrierte Unterstützung für [reguläre Ausdrücke](https://en.wikipedia.org/wiki/Regular_expression).
// Hier sind einige Beispiele für häufige reguläre-Ausdruck-verwandte Aufgaben
// in Go.
package main
import (
"bytes"
"fmt"
"regexp"
)
func main() {
// Dies testet, ob ein Muster einer Zeichenfolge entspricht.
match, _ := regexp.MatchString("p([a-z]+)ch", "peach")
fmt.Println(match)
// Obigen haben wir einen Zeichenfolgenmuster direkt verwendet, aber für
// andere reguläre-Ausdruck-Aufgaben müssen Sie eine optimierte
// `Regexp`-Struktur `Compile`.
r, _ := regexp.Compile("p([a-z]+)ch")
// Viele Methoden sind auf diesen Strukturen verfügbar. Hier ist
// ein Übereinstimmungstest wie wir ihn zuvor gesehen haben.
fmt.Println(r.MatchString("peach"))
// Dies findet die Übereinstimmung für den regulären Ausdruck.
fmt.Println(r.FindString("peach punch"))
// Dies findet ebenfalls die erste Übereinstimmung, aber gibt die
// Start- und Endindizes für die Übereinstimmung statt des
// übereinstimmenden Texts zurück.
fmt.Println("idx:", r.FindStringIndex("peach punch"))
// Die `Submatch`-Varianten enthalten Informationen über
// sowohl die gesamten Musterübereinstimmungen als auch die Teilübereinstimmungen
// innerhalb dieser Übereinstimmungen. Beispielsweise wird dies
// Informationen für sowohl `p([a-z]+)ch` als auch `([a-z]+)` zurückgeben.
fmt.Println(r.FindStringSubmatch("peach punch"))
// Ähnlich wird dies Informationen über die
// Indizes von Übereinstimmungen und Teilübereinstimmungen zurückgeben.
fmt.Println(r.FindStringSubmatchIndex("peach punch"))
// Die `All`-Varianten dieser Funktionen gelten für alle
// Übereinstimmungen in der Eingabe, nicht nur die erste. Zum
// Beispiel um alle Übereinstimmungen für einen regulären Ausdruck zu finden.
fmt.Println(r.FindAllString("peach punch pinch", -1))
// Diese `All`-Varianten sind auch für die anderen
// Funktionen verfügbar, die wir oben gesehen haben.
fmt.Println("all:", r.FindAllStringSubmatchIndex(
"peach punch pinch", -1))
// Die Angabe eines nicht-negativen Integers als zweites
// Argument für diese Funktionen wird die Anzahl der
// Übereinstimmungen begrenzen.
fmt.Println(r.FindAllString("peach punch pinch", 2))
// Unsere obigen Beispiele hatten Zeichenfolgenargumente und verwendeten
// Namen wie `MatchString`. Wir können auch `[]byte`-Argumente
// angeben und `String` aus dem Funktionsnamen entfernen.
fmt.Println(r.Match([]byte("peach")))
// Wenn Sie globale Variablen mit regulären
// Ausdrücken erstellen, können Sie die `MustCompile`-Variante
// von `Compile` verwenden. `MustCompile` stürzt anstatt
// einen Fehler zurückzugeben, was es sicherer macht, für
// globale Variablen zu verwenden.
r = regexp.MustCompile("p([a-z]+)ch")
fmt.Println("regexp:", r)
// Das `regexp`-Paket kann auch verwendet werden, um
// Teilmengen von Zeichenfolgen mit anderen Werten zu ersetzen.
fmt.Println(r.ReplaceAllString("a peach", "<fruit>"))
// Die `Func`-Variante ermöglicht es Ihnen, das übereinstimmende
// Text mit einer angegebenen Funktion zu transformieren.
in := []byte("a peach")
out := r.ReplaceAllFunc(in, bytes.ToUpper)
fmt.Println(string(out))
}
In diesem Lab wird gezeigt, wie reguläre Ausdrücke in Golang verwendet werden, um verschiedene Aufgaben durchzuführen, wie zum Beispiel das Testen, ob ein Muster einer Zeichenfolge entspricht, das Finden der Übereinstimmung für den regulären Ausdruck und das Ersetzen von Teilmengen von Zeichenfolgen mit anderen Werten.