Rumah > Artikel > pembangunan bahagian belakang > Mengapa Go Regex Melemparkan "Sintaks Perl Tidak Sah atau Tidak Disokong: (?!" Ralat dan Cara Mengatasinya?
Go Regex Parsing Error: (?!
Apabila cuba menyusun regex berikut dalam Go, ralat berlaku:
error parsing regexp: invalid or unsupported Perl syntax: (?!PenyelesaianMemandangkan Go tidak menyokong cari sekeliling secara asli, penyelesaiannya melibatkan pemeriksaan secara manual sama ada terdapat atau tiada corak tertentu regex:
Pendekatan berikut boleh digunakan:^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$Gunakan dua corak regex berasingan untuk menyemak kehadiran (corak kedua) dan ketiadaan (corak pertama) yang diingini corak.
absencePattern := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") presencePattern := regexp.MustCompile("^(On.*On\s.+?wrote:$")Lakukan semakan pada rentetan input:
if absencePattern.MatchString(input) && !presencePattern.MatchString(input) { // The pattern is absent } else { // The pattern is present }Pilihan Tambahan
Sebagai alternatif, anda boleh menggunakan kumpulan penangkap pilihan untuk mencapai hasil yang sama:
Pendekatan ini menghapuskan keperluan untuk corak regex yang berasingan, memudahkan kod sambil mengekalkan fungsi yang diingini.pattern := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`) if match := pattern.FindStringSubmatch(input); match != nil { // match is nil if no match found if match[1] != "" { // Group 1 ends with "On" return false } return true }
Atas ialah kandungan terperinci Mengapa Go Regex Melemparkan "Sintaks Perl Tidak Sah atau Tidak Disokong: (?!" Ralat dan Cara Mengatasinya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!