So emulieren Sie erfassende Gruppen in regulären Go-Ausdrücken
Im Gegensatz zu Ruby und Java, die PCRE-kompatible reguläre Ausdrücke verwenden, die die Erfassung unterstützen Gruppen verwendet Go die RE2-Bibliothek von Google, die diese Funktionalität nicht nativ bietet. In diesem Artikel wird untersucht, wie Sie in Go einen ähnlichen Effekt erzielen.
Betrachten Sie den folgenden regulären Ruby-Ausdruck mit einfangenden Gruppen:
(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})
Dieses Muster entspricht Datumszeichenfolgen wie „2001-01-20“ und erfasst die Jahres-, Monats- und Tageswerte in benannten Gruppen, auf die über ihre Namen zugegriffen werden kann, z. B. ["Jahr"].
Um dieses Verhalten zu emulieren In Go muss das Präfix „P“ hinzugefügt werden, um Gruppennamen zu erfassen:
(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
Der folgende Go-Code zeigt beispielsweise, wie dieses modifizierte Muster verwendet wird:
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()) }
The Die FindStringSubmatch-Funktion gibt die erfassten Gruppen zurück, während SubexpNames die Namen der erfassenden Gruppen bereitstellt, sodass Sie auf deren Werte zugreifen können.
Durch Hinzufügen des Präfixes „P“. Um Gruppennamen zu erfassen und die SubexpNames-Funktion zu nutzen, ist es möglich, die Funktionalität der Gruppenerfassung in regulären Ruby-Ausdrücken zu emulieren, wenn mit der RE2-Bibliothek von Go gearbeitet wird.
Das obige ist der detaillierte Inhalt vonWie simuliere ich benannte Erfassungsgruppen in regulären Go-Ausdrücken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!