Rumah > pembangunan bahagian belakang > Golang > Bagaimanakah saya boleh mengekstrak semua rentetan yang disertakan dalam pendakap kerinting daripada rentetan menggunakan Pakej Regexp Go?

Bagaimanakah saya boleh mengekstrak semua rentetan yang disertakan dalam pendakap kerinting daripada rentetan menggunakan Pakej Regexp Go?

Linda Hamilton
Lepaskan: 2025-01-04 04:21:40
asal
347 orang telah melayarinya

How Can I Extract All Strings Enclosed in Curly Braces from a String Using Go's Regexp Package?

Mencari Padanan Rentetan dengan Regex dalam Go

Artikel ini meneroka tugas untuk mendapatkan semula semua padanan ungkapan biasa yang diberikan terhadap rentetan yang ditentukan. Kami akan memeriksa rentetan sampel dan melaksanakan penyelesaian menggunakan pakej regexp Go untuk menangkap rentetan yang disertakan dalam pendakap kerinting.

Pernyataan Masalah

Diberi rentetan:

{city}, {state} {zip}
Salin selepas log masuk

Matlamat kami adalah untuk mengembalikan tatasusunan atau kepingan yang mengandungi semua padanan rentetan antara kerinting pendakap.

Penyelesaian

Untuk mencapai ini, kita boleh memanfaatkan ungkapan biasa untuk menentukan corak yang diingini. Walau bagaimanapun, terdapat beberapa pengubahsuaian utama yang perlu dibuat berbanding percubaan awal.

Mula-mula, kami mengalih keluar pembatas regex ("/") kerana ia tidak diperlukan dalam Go. Kedua, kami menggunakan literal rentetan mentah (ditandakan dengan backticks `) untuk menentukan corak regex. Ini membolehkan kami menggunakan satu garis miring ke belakang () untuk melepaskan aksara meta regex. Akhir sekali, memandangkan kita tidak perlu menangkap nilai individu, kita boleh memudahkan corak regex untuk memadankan rentetan antara pendakap kerinting tanpa menangkap kurungan.

Berikut ialah versi kod yang dikemas kini:

r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)
Salin selepas log masuk

Kod ini akan mengembalikan tatasusunan dengan padanan berikut:

["{city}", "{state}", "{zip}"]
Salin selepas log masuk

Menyelam Lebih mendalam

Jika kita ingin mengekstrak hanya nilai dalam pendakap kerinting, kita boleh menggunakan FindAllStringSubmatch dengan corak regex yang diubah suai sedikit termasuk menangkap kurungan:

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
Salin selepas log masuk

Dalam corak ini, ([^{}]*) ialah kumpulan penangkap yang sepadan dengan sebarang bilangan aksara selain daripada pendakap kerinting. Menggunakan FindAllStringSubmatch akan mengembalikan tatasusunan subpadanan untuk setiap perlawanan. Kemudian kita boleh mengulangi padanan kecil ini untuk mendapatkan nilai dalam kurungan.

Butiran Regex

  • { - Pendakap kerinting kiri literal
  • ([^{}]*) - Menangkap kumpulan padanan sifar atau lebih aksara tidak termasuk kerinting pendakap kurung
  • } - Pendakap kerinting kanan literal

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengekstrak semua rentetan yang disertakan dalam pendakap kerinting daripada rentetan menggunakan Pakej Regexp 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