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:
re1, _ := regexp.Compile(`([A-Z] )(?: "([^"] )")*`)
Diese Regex erfasst nur das letzte Argument in der Zeichenfolge. Ändern Sie den Ausdruck, um die Erfassung mehrerer Gruppen von Argumenten zu ermöglichen:
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
Um nun sowohl den Befehl als auch die Argumente zu extrahieren, verwenden Sie die Funktion FindAllStringSubmatch mit einem entsprechend modifizierten regulären Ausdruck:
results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)
Diese Regex-Erfassungsgruppen sind:
Abschließend zum Iterieren über die Ergebnisse und trennen Sie den Befehl von den Argumenten:
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
Indem Sie die Mängel bei regulären Ausdrücken beheben, können Sie wiederkehrende Gruppen effektiv in Ihrem Go-Code erfassen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3