Heim >Backend-Entwicklung >Golang >Wie kann ich erfassende Gruppen in regulären Go-Ausdrücken emulieren?

Wie kann ich erfassende Gruppen in regulären Go-Ausdrücken emulieren?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-31 02:06:14844Durchsuche

How Can I Emulate Capturing Groups in Go Regular Expressions?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn