Heim >Backend-Entwicklung >Golang >Wie erfasst man mehrere sich wiederholende Gruppen in regulären Ausdrücken in Go?
Bei der Arbeit mit Zeichenfolgen, die einem bestimmten Muster folgen, kann das Erfassen sich wiederholender Gruppen eine häufige Aufgabe sein. In Go sind reguläre Ausdrücke ein leistungsstarkes Werkzeug für diesen Zweck.
Stellen Sie sich das folgende Problem vor: Parsen von Zeichenfolgen, die aus einem Wort in Großbuchstaben bestehen, gefolgt von null oder mehr Argumenten in doppelten Anführungszeichen. Das Ziel besteht darin, sowohl den Befehl (Wort in Großbuchstaben) als auch die Argumente (Strings in Anführungszeichen) zu extrahieren.
Ein häufiger Fehler ist die Verwendung eines regulären Ausdrucks wie:
<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)</code>
Dieser reguläre Ausdruck erfasst nur das letzte Argument in der Zeichenfolge. Ändern Sie den Ausdruck, um die Erfassung mehrerer Gruppen von Argumenten zu ermöglichen:
<code class="go">re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)</code>
Um nun sowohl den Befehl als auch die Argumente zu extrahieren, verwenden Sie die Funktion FindAllStringSubmatch mit einer entsprechend modifizierten regulären Funktion Ausdruck:
<code class="go">results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)</code>
Diese Regex-Erfassungsgruppen sind:
Zuletzt, um die Ergebnisse zu iterieren und den Befehl von den Argumenten zu trennen:
<code class="go">fmt.Println("Command:", results[0][1]) for _, arg := range results[1:] { fmt.Println("Arg:", arg[2]) }</code>
Indem Sie die Mängel des regulären Ausdrucks beheben, können Sie wiederkehrende Gruppen effektiv in Ihrem Go-Code erfassen.
Das obige ist der detaillierte Inhalt vonWie erfasst man mehrere sich wiederholende Gruppen in regulären Ausdrücken in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!