Memahami Output Fungsi ReplaceAllString Go
Fungsi ReplaceAllString dalam Go menyediakan cara untuk menggantikan semua padanan ungkapan biasa dalam rentetan . Walaupun output pertama bagi contoh kod yang disediakan adalah mudah untuk difahami, output berikutnya mungkin kelihatan membingungkan.
Output 2 dan 4: Memahami Rujukan Balik $1
Dalam yang kedua dan output keempat, $1 merujuk kepada kumpulan tangkapan yang ditakrifkan oleh set kurungan pertama dalam ungkapan biasa: a(x)b. Kumpulan tangkapan ini sepadan dan menangkap rentetan yang terdiri daripada sebarang bilangan aksara 'x'.
Output 3: Memahami $1 W
Output ketiga (fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W"))) adalah yang paling menarik. Dokumentasi pada ReplaceAllString menyatakan bahawa "$ signs" dalam corak penggantian ditafsirkan seperti dalam fungsi Expand:
Inside repl, $ signs ditafsirkan seperti dalam Expand
Kembangkan menyatakan bahawa:
Dalam templat, pembolehubah dilambangkan dengan subrentetan bentuk $name atau ${name}, dengan nama ialah urutan huruf, digit yang tidak kosong , dan garis bawah.
Rujukan kepada indeks di luar julat atau tidak sepadan atau nama yang tidak terdapat dalam ungkapan biasa digantikan dengan kepingan kosong.
Dalam borang $name, nama diambil sebagai sebagai selama mungkin: $1x bersamaan dengan ${1x}, bukan ${1}x dan, $10 bersamaan dengan ${10}, bukan ${1}0.
Dalam kes kami, $1W adalah bersamaan dengan ${1W}, kerana ia dianggap selama yang mungkin. Walau bagaimanapun, kumpulan tangkapan 1W tidak ditakrifkan dalam ungkapan biasa. Ini bermakna ia tidak diisi semasa operasi pemadanan, dan oleh itu, ia dianggap sebagai indeks "di luar julat" atau "tidak sepadan". Oleh itu, $1W digantikan dengan rentetan kosong ("") semasa fasa penggantian.
Atas ialah kandungan terperinci Bagaimanakah fungsi ReplaceAllString Go mengendalikan penggantian \'$1W\' apabila kumpulan tangkapan \'1W\' tidak ditakrifkan dalam ungkapan biasa?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!