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}
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)
Kod ini akan mengembalikan tatasusunan dengan padanan berikut:
["{city}", "{state}", "{zip}"]
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)
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
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!