Erfassen von Gruppen in regulären Go-Ausdrücken
In Go verwenden reguläre Ausdrücke die RE2-Bibliothek, der es an nativer Unterstützung für die Erfassung von Gruppen fehlt, wie sie in zu finden ist Ruby und andere Sprachen. Es gibt jedoch eine Lösung, um diese Funktionalität zu emulieren.
Um das gewünschte Verhalten zu erreichen, muss man „P“ an den Gruppennamen anhängen, wie im folgenden aktualisierten Ausdruck dargestellt:
(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
Um die Werte aus den erfassenden Gruppen zu extrahieren, kann man die Funktion re.SubexpNames() verwenden, um die Gruppennamen abzurufen und sie mit der Übereinstimmung zu vergleichen Daten.
Betrachten Sie das folgende Beispiel:
package main import ( "fmt" "regexp" ) func main() { r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`) fmt.Printf("%#v\n", r.FindStringSubmatch(`2015-05-27`)) fmt.Printf("%#v\n", r.SubexpNames()) }
In diesem Beispiel gibt r.FindStringSubmatch() die passende Teilzeichenfolge zurück und das entsprechende r.SubexpNames() stellt die Gruppennamen bereit:
[]string{"2015", "05", "27"} []string{"", "Year", "Month", "Day"}
So kann man über Gruppennamen bequem auf das erfasste Jahr, den Monat und den Tag zugreifen und bietet ähnliche Funktionen wie die Erfassung von Gruppen in anderen Sprachen.
Das obige ist der detaillierte Inhalt vonWie kann ich erfassende Gruppen in regulären Go-Ausdrücken emulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!