Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk Penyelesaian Lookarounds dalam Go Regular Expressions?

Bagaimana untuk Penyelesaian Lookarounds dalam Go Regular Expressions?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-12 19:47:021021semak imbas

How to Workaround Lookarounds in Go Regular Expressions?

Ralat Menghuraikan Regexp: Sintaks Perl Tidak Sah atau Tidak Disokong (?!

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.

Memahami Lookarounds

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".

Go Regexp Workaround

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!

Kenyataan:
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