Bagaimanakah fungsi ReplaceAllString Go mengendalikan rujukan belakang dan rujukan berubah dalam rentetan gantian?

Barbara Streisand
Lepaskan: 2024-11-01 23:34:29
asal
159 orang telah melayarinya

How does Go's ReplaceAllString function handle backreferences and variable references in replacement strings?

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

Output:

-T-T-
--xx-
---
-W-xxW-
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!