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 bewältigen, 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 lösen, 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 wie folgt:
<code class="go">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]) }</code>
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.
Das obige ist der detaillierte Inhalt vonSo erfassen Sie mehrere Gruppen in Anführungszeichen in Go: Eine Regex-Lösung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!