Bagaimana untuk Menangkap Berbilang Hujah dalam Go Menggunakan Ungkapan Biasa?

Mary-Kate Olsen
Lepaskan: 2024-10-27 10:56:01
asal
292 orang telah melayarinya

How to Capture Multiple Arguments in Go Using Regular Expressions?

Menangkap Berbilang Kumpulan dalam Go: Satu Kajian Kes

Apabila menghuraikan rentetan yang mengandungi perkataan besar diikuti dengan hujah petikan dua pilihan, mengasingkan kumpulan individu boleh mencabar. Satu pendekatan biasa melibatkan penggunaan ungkapan biasa, seperti yang ditunjukkan oleh coretan kod berikut:

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)
results := re1.FindAllStringSubmatch(input, -1)</code>
Salin selepas log masuk

Walau bagaimanapun, isu boleh timbul apabila berbilang hujah hadir, kerana hanya hujah terakhir yang ditangkap. Untuk menyelesaikan masalah ini, ungkapan biasa yang lebih fleksibel diperlukan.

Ungkapan Biasa Dipertingkat

Dengan melonggarkan kekangan kumpulan, kita boleh menangkap kedua-dua arahan dan hujah dengan berkesan:

re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)
Salin selepas log masuk

Dalam regex yang disemak ini:

  • Kumpulan pertama ([A-Z] ) sepadan dengan perkataan huruf besar (perintah).
  • Kumpulan kedua (?: "( [^"] )") sepadan dengan hujah petikan dua kali, membenarkan berbilang kejadian.

Pengeluaran dan Paparan

Setelah kumpulan ditangkap, kami boleh mengekstrak dan paparkan arahan dan hujah secara berasingan:

fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}
Salin selepas log masuk

Pendekatan ini membolehkan penghuraian rentetan yang cekap dengan struktur arahan yang jelas.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Hujah dalam Go Menggunakan Ungkapan Biasa?. 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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!