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

Cara Menangkap Berbilang Kumpulan Dipetik dalam Go: Penyelesaian Regex

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-26 00:53:28820semak imbas

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>

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!

Kenyataan:
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