Erfassen mehrerer Gruppen in Anführungszeichen in Go
Dieser Artikel befasst sich mit der Herausforderung beim Parsen von Zeichenfolgen, die einem bestimmten Format folgen: ein Befehl in Großbuchstaben, gefolgt von optional zitierte Argumente. Das Ziel besteht darin, sowohl den Befehl als auch die Argumente als separate Zeichenfolgen zu extrahieren.
Um diese Aufgabe zu erledigen, wird ein regulärer Ausdruck verwendet: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*). Die erste einfangende Gruppe ([A-Z] ) stimmt mit dem Großbuchstabenbefehl überein, während die zweite einfangende Gruppe (?: „([^“] )“)* mit null oder mehr Argumenten in Anführungszeichen übereinstimmt.
Allerdings der bereitgestellte Code Erfasst nur das letzte Argument. Um dieses Problem zu beheben, wird ein entspannterer regulärer Ausdruck vorgeschlagen: re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )")). Dieser reguläre Ausdruck verwendet eine Union |, um entweder einen Befehl oder ein Argument zuzulassen.
Durch Ändern des Codes in:
re1, _ := regexp.Compile(`([A-Z] )|(?: "([^"] )")`)
results := re1.FindAllStringSubmatch(`COMMAND "arg1" "arg2" "arg3"`, -1)
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
Alle Argumente können jetzt erfolgreich erfasst werden. Dieser überarbeitete reguläre Ausdruck ist vielseitiger und berücksichtigt Variationen im Eingabeformat, bei denen Befehle und Argumente in unterschiedlicher Reihenfolge auftreten können.
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