Rumah >pembangunan bahagian belakang >Golang >Mengapa Regex Saya Berfungsi dalam Python tetapi Tidak dalam Go?

Mengapa Regex Saya Berfungsi dalam Python tetapi Tidak dalam Go?

Linda Hamilton
Linda Hamiltonasal
2024-11-28 07:51:101004semak imbas

Why Does My Regex Work in Python but Not in Go?

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: " =0xA-F". Walau bagaimanapun, yang membingungkan pembangun, regex "^. =b0xA-Fb$", yang menangkap corak ini dalam Python, menghasilkan output "false" yang tidak dijangka dalam Go.

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!

Kenyataan:
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