Apabila cuba menyusun ungkapan biasa dalam Go, pengguna mungkin menghadapi ralat penghuraian berikut:
error parsing regexp: invalid or unsupported Perl syntax: (?!
Ralat ini biasanya ditimbulkan apabila cuba menggunakan operator lookaround (?!..., yang tidak disokong dalam sintaks ungkapan biasa Go.
Lookarounds ialah jenis khas pengendali ungkapan biasa yang digunakan untuk memadankan corak hanya jika ia tidak diikuti dengan segera atau didahului oleh corak tertentu yang lain Dalam kes ini, (?! sedang digunakan untuk menyemak sama ada rentetan yang diberikan tidak bermula dengan teks "Hidup".
Oleh kerana Go tidak menyokong lookarounds, terdapat beberapa penyelesaian yang tersedia:
Menggunakan Separate Regexps
Satu pendekatan ialah menggunakan dua ungkapan biasa yang berasingan:
nonOnRegex := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") onOnRegex := regexp.MustCompile("^On.*On\s.+?wrote:")
Anda kemudian boleh menyemak sama ada nonOnRegex sepadan dengan rentetan dan onOnRegex tidak sepadan untuk menentukan hasil yang diingini.
Menggunakan Kumpulan Penangkapan Pilihan
Penyelesaian lain ialah menggunakan kumpulan penangkapan pilihan:
regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Selepas memadankan rentetan menggunakan ungkapan biasa ini, anda boleh menyemak sama ada yang pertama kumpulan penangkapan wujud dan berakhir dengan "Hidup". Jika ya, kembalikan palsu, sebaliknya kembalikan benar.
Dengan melaksanakan salah satu penyelesaian ini, anda boleh meniru kefungsian cari sekitar dalam sintaks ungkapan biasa Go dengan berkesan.
Atas ialah kandungan terperinci Bagaimana untuk Penyelesaian Lookarounds dalam Go Regular Expressions?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!