Set Dinafikan Ungkapan Regex Tidak Berfungsi dalam Go
Seorang pengguna telah menghadapi isu di mana ungkapan biasa dengan set dinafikan tidak berfungsi sebagai dijangka dalam Go. Ungkapan, yang disahkan pada berbilang penghurai regex dalam talian, bertujuan untuk memadankan rentetan yang tidak berakhir dengan sambungan fail tertentu.
^(.*\.(?!(htm|html|class|js)$))?[^.]
Walau bagaimanapun, melaksanakan ungkapan ini dalam Go menghasilkan hasil yang berbeza. Pengguna memudahkan ungkapan untuk mengalih keluar set yang dinafikan dan memperoleh padanan yang diingini.
Memahami Isu
Enjin ekspresi biasa Go, RE2, tidak menyokong operator lookaround seperti pandangan negatif?! digunakan dalam ungkapan asal. Ketiadaan sokongan tinjauan ini menyebabkan set yang dinafikan menjadi tidak berkesan.
Penyelesaian
Untuk memastikan rentetan berakhir dalam sambungan fail tiga aksara, pengguna boleh memudahkan ungkapan kepada:
\.\w{3}$
Ungkapan ini sepadan dengan noktah literal, diikuti dengan tiga aksara perkataan (alfanumerik dan garis bawah), diikuti dengan penghujung rentetan. Ia berkesan mencapai hasil yang sama seperti ungkapan asal tetapi tanpa bergantung pada pengendali lihat sekeliling.
Atas ialah kandungan terperinci Mengapa Set Regex Negated Saya Tidak Berfungsi dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!