Merakam Kumpulan Berulang dalam GO
Ungkapan biasa anda ([A-Z] )(?: "([^"] )")* direka bentuk untuk menangkap perkataan huruf besar diikuti dengan sifar atau lebih hujah petikan dua, bagaimanapun, seperti yang anda temui, ia hanya menangkap hujah terakhir.
Memahami Regex
Reex terdiri daripada dua kumpulan penangkap:Penyelesaian
Untuk menangkap semua argumen, ubah suai regex kepada:re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")+`)
Kod Contoh
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])
}
}
Taman permainan
https://play.golang.org/p/8WmZ0yuHHzjAtas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Hujah yang Dipetik dalam Ungkapan Biasa dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!