Regex Woes in Go: Mengapa Ia Berfungsi dalam Python Tetapi Tidak Pergi?
Dalam bidang pengaturcaraan, ungkapan biasa (regex) adalah alat yang tidak ternilai untuk padanan corak dan manipulasi rentetan. Walau bagaimanapun, kadangkala, regex tidak disangka-sangka berkelakuan tidak wajar merentas bahasa yang berbeza. Contohnya: isu membingungkan yang dilaporkan oleh pengaturcara Go, di mana regex yang berfungsi dengan sempurna dalam Python gagal dalam Go.
Kod yang dimaksudkan bertujuan untuk memadankan rentetan mengikut corak tertentu: "
Setelah diperiksa lebih dekat, pelakunya didedahkan: penggunaan literal rentetan konvensional dalam Go. Rentetan dalam Go lazimnya disertakan dalam petikan berganda, yang membenarkan urutan melarikan diri seperti "n" untuk pemisah baris. Walau bagaimanapun, corak regex mengandungi literal "b", yang menandakan sempadan perkataan. Ini bercanggah dengan perlakuan penterjemah Go terhadap rentetan, yang menganggap "b" sebagai urutan melarikan diri untuk ruang belakang.
Untuk membetulkan isu ini, Go menggunakan literal rentetan mentah, dilambangkan dengan petikan belakang, yang mentafsir aksara secara literal, tanpa sebarang penggantian urutan pelarian. Dengan melampirkan corak regex dalam petikan belakang ("`^. =b0xA-Fb$") dan bukannya petikan berganda, kod itu sepadan dengan betul dengan rentetan yang dikehendaki dalam Go.
Atas ialah kandungan terperinci Mengapa Regex Saya Berfungsi dalam Python tetapi Tidak dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!