Bagaimana Memadankan Mana-mana Watak Berulang Menggunakan Ungkapan Biasa dalam Go?
Dalam artikel ini, kami akan menangani cabaran memadankan mana-mana watak yang berulang dua kali menggunakan ungkapan biasa dalam Go. Tugas ini selalunya mudah dalam sintaks regex lain, seperti JavaScript, di mana seseorang hanya boleh menggunakan rujukan belakang untuk memadankan aksara berulang. Walau bagaimanapun, enjin ungkapan biasa asli Go (re2) tidak menyokong rujukan belakang.
Tidak Dapat Menggunakan Rujukan Balik dalam Go's re2
Contoh JavaScript yang disediakan memanfaatkan rujukan belakang untuk menangkap aksara berulang:
<code class="javascript">var str = "abccdeff"; var r = /([a-z]{1})/g console.log(str.match(r))</code>
Corak ini akan gagal dalam re2 Go kerana kekurangan sokongan rujukan belakang.
Alternatif kepada re2 Go
Kepada tangani had ini, pertimbangkan alternatif berikut:
Contoh Penyelesaian Gelung Tersuai
<code class="go">package main import ( "fmt" "regexp" ) func main() { str := "abccdeff" // Find and print repeating characters without using regex for i, ch := range str { if i+1 < len(str) && ch == rune(str[i+1]) { fmt.Printf("Found repeated character: %c\n", ch) } } }</code>
Atas ialah kandungan terperinci Bagaimana untuk Memadankan Aksara Berulang dalam Go Without Backreferences?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!