Heim >Backend-Entwicklung >Golang >Wie kann ich Erfassungsgruppen in regulären Go-Ausdrücken verwenden?

Wie kann ich Erfassungsgruppen in regulären Go-Ausdrücken verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-26 12:37:09865Durchsuche

How Can I Use Capturing Groups in Go Regular Expressions?

Erfassen von Gruppen in regulären Go-Ausdrücken

Beim Portieren von Code von Ruby nach Go stoßen Entwickler häufig auf Kompatibilitätsprobleme mit regulären Ausdrücken. Ruby unterstützt das Erfassen von Gruppen innerhalb von Regexes, eine Funktion, die in der RE2-Bibliothek von Go nicht nativ verfügbar ist.

Ausdrücke für Go neu schreiben

Um die Funktionalität von Erfassungsgruppen zu emulieren, können die folgenden Schritte ausgeführt werden vergeben:

1. Benannte Erfassungsgruppen verwenden:
Anstatt spitze Klammern zu verwenden, fügen Sie „P“ zwischen der öffnenden Klammer und dem Gruppennamen ein, z. B. (?Pd{4}) für die Jahresgruppe.

2. Querverweisgruppennamen:
Verwenden Sie die Funktion regexp.SubexpNames(), um eine Liste der Erfassungsgruppennamen zu erhalten.

3. Auf erfasste Daten zugreifen:
Verwenden Sie den entsprechenden Gruppennamen als Argument für Funktionen wie FindStringSubmatch, um die erfassten Werte abzurufen.

Beispiel:

package main

import (
    "fmt"
    "regexp"
)

func main() {
    r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`)
    s := `2015-05-27`
    fmt.Printf("Matched Substrings: %#v\n", r.FindStringSubmatch(s))
    fmt.Printf("Group Names: %#v\n", r.SubexpNames())
}

Ausgabe:

Matched Substrings: [2015 05 27]
Group Names: [ Year Month Day ]

Das obige ist der detaillierte Inhalt vonWie kann ich Erfassungsgruppen in regulären Go-Ausdrücken verwenden?. 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