Rumah > pembangunan bahagian belakang > Golang > Mengapa Go Regex Melemparkan 'Sintaks Perl Tidak Sah atau Tidak Disokong: (?!' Ralat dan Cara Mengatasinya?

Mengapa Go Regex Melemparkan 'Sintaks Perl Tidak Sah atau Tidak Disokong: (?!' Ralat dan Cara Mengatasinya?

Mary-Kate Olsen
Lepaskan: 2024-11-16 17:52:03
asal
935 orang telah melayarinya

Why Does Go Regex Throw a

Go Regex Parsing Error: (?!

Apabila cuba menyusun regex berikut dalam Go, ralat berlaku:

error parsing regexp: invalid or unsupported Perl syntax: (?!

Penyelesaian

Memandangkan 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:)$
Salin selepas log masuk

Gunakan dua corak regex berasingan untuk menyemak kehadiran (corak kedua) dan ketiadaan (corak pertama) yang diingini corak.
  • Kompilasikan corak:
absencePattern := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$")
presencePattern := regexp.MustCompile("^(On.*On\s.+?wrote:$")
Salin selepas log masuk
Lakukan semakan pada rentetan input:
if absencePattern.MatchString(input) && !presencePattern.MatchString(input) {
  // The pattern is absent
} else {
  // The pattern is present
}
Salin selepas log masuk
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
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan