Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Menangkap Berbilang Hujah dalam Go Menggunakan Ungkapan Biasa?

Bagaimana untuk Menangkap Berbilang Hujah dalam Go Menggunakan Ungkapan Biasa?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 10:56:01293semak imbas

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>

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]+)|(?: "([^"]+)")`)

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])
}

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!

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