Go ReplaceAllString Decoded
Fungsi ReplaceAllString dalam Go membenarkan penggantian subrentetan yang dipadankan dalam rentetan input yang diberikan. Pertimbangkan coretan kod berikut:
<code class="go">re := regexp.MustCompile("a(x*)b") fmt.Println(re.ReplaceAllString("-ab-axxb-", "T")) fmt.Println(re.ReplaceAllString("-ab-axxb-", "")) fmt.Println(re.ReplaceAllString("-ab-axxb-", "W")) fmt.Println(re.ReplaceAllString("-ab-axxb-", "W"))</code>
Output:
-T-T- --xx- --- -W-xxW-
Penjelasan:
2 . -ab-axxb- digantikan dengan $1 (RemoveAllString contoh)
Ini menggantikan subrentetan yang dipadankan dengan kandungan kumpulan tangkapan pertama dalam ungkapan biasa. Dalam kes ini, kumpulan penangkap sepadan dengan aksara antara a dan b, jadi outputnya ialah -xx-.
3. -ab-axxb- digantikan dengan $1W (RemoveAllString contoh)
Penggantian ini menggunakan rujukan belakang $1 untuk mengenal pasti subrentetan yang dipadankan, tetapi ia menambahkan "W" padanya. Walau bagaimanapun, memandangkan ungkapan biasa tidak mempunyai kumpulan penangkapan dengan nama 1W, rujukan $1W adalah kosong. Akibatnya, output ialah ---.
4. -ab-axxb- digantikan dengan ${1}W (RemoveAllString contoh)
Penggantian ini serupa dengan yang sebelumnya, tetapi ia menggunakan pendakap kerinting di sekeliling rujukan belakang ($1). Menurut dokumentasi Kembangkan, pendakap kerinting digunakan untuk menandakan rujukan berubah-ubah dan bukan rujukan belakang. Oleh kerana 1 bukan pembolehubah dalam ungkapan biasa, output ialah -W-xxW-.
Atas ialah kandungan terperinci Bagaimanakah fungsi ReplaceAllString Go mengendalikan rujukan belakang dan rujukan berubah dalam rentetan gantian?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!