Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengatasi Lookarounds dalam Go Regular Expressions?

Bagaimana untuk Mengatasi Lookarounds dalam Go Regular Expressions?

Patricia Arquette
Lepaskan: 2024-11-24 11:30:16
asal
1011 orang telah melayarinya

How to Work Around Lookarounds in Go Regular Expressions?

Ralat Menghuraikan Regex: Sintaks Perl Tidak Sah - Memahami Isu dan Mencari Penyelesaian

Apabila cuba menyusun ungkapan biasa "^(? !Hidup.*Hidup ?menulis:)(Hid\s(. ?)wrote:)$" dalam Go, ralat biasa yang dihadapi ialah:

error parsing regexp: invalid or unsupported Perl syntax: (?!
Salin selepas log masuk

Ralat ini berpunca daripada fakta bahawa Go tidak menyokong carian, ciri sintaks yang tersedia dalam ungkapan biasa Perl yang membenarkan negatif pandangan ke hadapan seperti (?!.

Memahami Lookaround Sintaks

Dalam ungkapan biasa, lookaround ialah metacharacter yang menegaskan keadaan tanpa menggunakan sebarang aksara daripada rentetan input Pandangan negatif, dilambangkan dengan (?!, menegaskan bahawa ungkapan berikut tidak sepatutnya sepadan pada kedudukan semasa.

Go Regex Penyelesaian

Memandangkan Go tidak menyokong carian, ungkapan biasa di atas tidak boleh digunakan secara langsung, sebaliknya, penyelesaian menggunakan berbilang ungkapan biasa dan semakan bersyarat diperlukan:

r1 := regexp.MustCompile(`^On\s(.+?)wrote:$`)
r2 := regexp.MustCompile(`^On.*On\s.+?wrote:`)
match1 := r1.MatchString(inputString)
match2 := r2.MatchString(inputString)
if match1 && !match2 {
    // The string does not contain "On ... On" but contains "On ..."
   // Handle match
}
Salin selepas log masuk

Sebagai alternatif. , anda boleh menggunakan kumpulan penangkap pilihan dan semak kandungan kumpulan itu selepas berjaya padanan:

r := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
match := r.FindStringSubmatch(inputString)
if match != nil {
   // Handle match
   if match[1] != "" {
      // Group 1 ends with "On"
   }
}
Salin selepas log masuk

Nota Tambahan

  • Gunakan fungsi regexp.MustCompile untuk menyusun corak ungkapan biasa, kerana ia panik pada ungkapan tidak sah, memudahkan ralat pengendalian.
  • Penyelesaian yang disediakan bergantung pada andaian bahawa rentetan input mengikut format yang ditentukan. Laraskan ungkapan biasa dengan sewajarnya jika format berbeza.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Lookarounds dalam Go Regular Expressions?. 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