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

Bagaimana untuk Mengatasi Lookarounds dalam Go Regex?

Barbara Streisand
Lepaskan: 2024-11-30 16:45:11
asal
271 orang telah melayarinya

How to Work Around Lookarounds in Go Regex?

Ralat Menghuraikan Regexp: Sintaks Perl Tidak Sah (?!

Apabila cuba menggunakan ungkapan biasa dalam Go, ralat ditemui:

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

Ralat ini berlaku secara khusus dengan perkara berikut regex:

regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$")
Salin selepas log masuk

Penyelesaian

Isu ini timbul kerana Go regex tidak menyokong lookarounds, tidak seperti Perl Lookarounds ialah penegasan yang menyemak teks sekeliling tanpa menggunakannya.

Untuk mengatasi pengehadan ini, gunakan pendekatan yang berbeza:

Pertama sekali, susun dua biasa berasingan ungkapan:

first := regexp.MustCompile(`^On\s(.+?)wrote:$`)
second := regexp.MustCompile(`^On.*On\s.+?wrote:`)
Salin selepas log masuk
Kemudian, laksanakan langkah berikut:

    Semak jika pertama kali sepadan dengan rentetan.
  1. Jika ya, teruskan ke langkah 3. Jika tidak , rentetan tidak sepadan dengan kedua-dua ungkapan, jadi kembalikan benar.
  2. Semak sama ada kedua sepadan dengan rentetan.
  3. Jika ya, rentetan itu sepadan dengan ungkapan kedua, jadi kembalikan palsu Jika tidak, kembalikan benar.
Sebagai alternatif, anda boleh menggunakan kumpulan penangkapan pilihan untuk memudahkan proses. :

regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Salin selepas log masuk
Semak padanan dan kembalikan benar jika:

    Kumpulan 1 berakhir dengan Hidup.
  • Kumpulan 1 tidak wujud atau tidak berakhir dengan Hidup.
Jika tidak, kembalikan palsu.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Lookarounds dalam Go Regex?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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