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
Lepaskan: 2024-10-29 06:29:02
asal
897 orang telah melayarinya

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

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

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

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

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!

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