Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menangkap Berbilang Kumpulan Berulang dalam Ungkapan Biasa dalam Go?

Bagaimana untuk Menangkap Berbilang Kumpulan Berulang dalam Ungkapan Biasa dalam Go?

Barbara Streisand
Barbara Streisandasal
2024-10-29 06:29:02924semak imbas

How to Capture Multiple Repeating Groups in Regular Expressions in Go?

Merakam Kumpulan Berulang dalam Go

Apabila bekerja dengan rentetan yang mengikut corak tertentu, menangkap kumpulan berulang boleh menjadi tugas biasa. Dalam Go, ungkapan biasa ialah alat yang berkuasa untuk tujuan ini.

Pertimbangkan masalah berikut: Menghuraikan rentetan yang terdiri daripada perkataan huruf besar diikuti dengan sifar atau lebih argumen yang disertakan dalam petikan berganda. Matlamatnya adalah untuk mengekstrak kedua-dua perintah (perkataan huruf besar) dan argumen (rentetan petikan).

Perangkap Regex

Kesilapan biasa ialah menggunakan ungkapan biasa seperti:

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)(?: "([^"]+)")*`)</code>

Reteks ini hanya menangkap argumen terakhir dalam rentetan. Ubah suai ungkapan untuk membolehkan menangkap berbilang kumpulan argumen:

<code class="go">re1, _ := regexp.Compile(`([A-Z]+)|(?: "([^"]+)")`)</code>

Menangkap Perintah dan Argumen

Sekarang, untuk mengekstrak kedua-dua arahan dan hujah, gunakan fungsi FindAllStringSubmatch dengan tetapan biasa yang diubah suai ungkapan:

<code class="go">results := re1.FindAllStringSubmatch(`COPY "filename one" "filename two"`, -1)</code>

Kumpulan penangkap regex ini ialah:

  • Kumpulan 1: Perintah (perkataan huruf besar)
  • Kumpulan 2: Setiap hujah (rentetan petikan berganda)

Lelaran Atas Keputusan

Akhir sekali, untuk lelaran ke atas keputusan dan pisahkan arahan daripada argumen:

<code class="go">fmt.Println("Command:", results[0][1])
for _, arg := range results[1:] {
    fmt.Println("Arg:", arg[2])
}</code>

Dengan menangani kekurangan ungkapan biasa, anda boleh menangkap kumpulan berulang dalam kod Go anda dengan berkesan.

Atas ialah kandungan terperinci Bagaimana untuk Menangkap Berbilang Kumpulan Berulang dalam Ungkapan Biasa dalam Go?. 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