在GO 中捕捉重複群組
你的正規表示式([A-Z] )(?: "([^"] ) ")*旨在捕獲後跟零個或多個雙引號參數的大寫單字。但是,正如您所發現的,它只捕獲最後一個參數。
理解正則表達式
正規表示式由兩個捕獲組組成:
要捕獲所有參數,請將正規表示式修改為:
透過將星號* 替換為加號,第二組現在是捕獲組。re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")+`)
package main
import (
"fmt"
"regexp"
)
func main() {
re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")+`)
results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)
fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
fmt.Println("Arg:", arg[2])
}
}
https://play.golang.org/p/8WmZ0yuHHz
以上是如何在 Go 中擷取正規表示式中的多個參考參數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!