Rumah > pembangunan bahagian belakang > Golang > Cara Menangkap Berbilang Kumpulan Dipetik dalam Go: Penyelesaian Regex

Cara Menangkap Berbilang Kumpulan Dipetik dalam Go: Penyelesaian Regex

Mary-Kate Olsen
Lepaskan: 2024-10-26 00:53:28
asal
900 orang telah melayarinya

How to Capture Multiple Quoted Groups in Go: A Regex Solution

Menangkap Berbilang Kumpulan Dipetik dalam Go

Artikel ini menangani cabaran menghuraikan rentetan yang mengikut format tertentu: perintah huruf besar diikuti dengan pilihan hujah yang dipetik. Matlamatnya adalah untuk mengekstrak kedua-dua arahan dan argumen sebagai rentetan yang berasingan.

Untuk mengendalikan tugas ini, ungkapan biasa digunakan: re1, _ := regexp.Compile(([A-Z] )(?: " (1 )")*). Kumpulan menangkap pertama ([A-Z] ) sepadan dengan perintah huruf besar, manakala kumpulan menangkap kedua (?: "([^"] )")* sepadan dengan sifar atau lebih banyak hujah yang dipetik.

Walau bagaimanapun, kod yang disediakan hanya menangkap hujah terakhir. Untuk menyelesaikan isu ini, regex yang lebih santai dicadangkan: re1, _ := regexp.Compile(([A-Z] )|(?: "(1 )")). Regex ini menggunakan kesatuan | untuk membenarkan sama ada perintah atau argumen.

Dengan mengubah suai kod kepada:

<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>
Salin selepas log masuk

semua argumen kini boleh berjaya ditangkap. Regex yang disemak ini lebih serba boleh, menampung variasi dalam format input yang perintah dan hujah mungkin berlaku dalam susunan yang berbeza.


  1. "

Atas ialah kandungan terperinci Cara Menangkap Berbilang Kumpulan Dipetik dalam Go: Penyelesaian Regex. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan