Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Mengapa Set Regex Negated Saya Gagal dalam Go?

Mengapa Set Regex Negated Saya Gagal dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 03:14:27666semak imbas

Why Does My Regex Negated Set Fail in Go?

Set Dinafikan Ungkapan Regex Tidak Berfungsi dalam Go

Dalam siaran ini, kami meneroka ungkapan regex yang gagal padan dengan rentetan dalam Golang kerana ia lakukan dalam parser regex dalam talian. Isu ini berpunca daripada set dinafikan yang tidak disokong dalam enjin regex pustaka standard Go, RE2.

Ungkapan biasa yang dimaksudkan direka bentuk untuk memadankan rentetan yang:

  • Diakhiri dengan sambungan fail (cth., ".htm", ".html", ".class", ".js") sebagai set negatif (iaitu, jangan berakhir dengan sambungan ini).
  • Tamatkan dengan mana-mana aksara yang tidak disebut dalam set negatif dan bukan noktah (.)

Melaksanakan ungkapan ini dalam Golang tidak menghasilkan padanan yang sama seperti yang ditunjukkan oleh penghurai regex dalam talian kerana RE2, yang digunakan oleh perpustakaan standard Golang, tidak mempunyai sokongan untuk operator lookaround seperti operator lookaround negatif ("?!").

Untuk menyelesaikan isu ini, kami mempunyai dua pilihan:

  • Gunakan perpustakaan yang menyokong lookaround: Kita boleh melaksanakan pandangan negatif menggunakan perpustakaan yang menyokong tinjauan, seperti pakej "github.com/google/re2/regexp".
  • Ringkaskan ungkapan: Jika semua kita keperluan adalah untuk memastikan rentetan berakhir dengan sambungan fail tiga aksara, kita boleh memudahkan ungkapan kepada ".w{3}$" yang sepadan dengan tempoh literal diikuti dengan tiga aksara pada penghujung rentetan.

Dengan menggunakan salah satu pendekatan ini, kita boleh mencapai gelagat padanan yang diingini di Golang.

Atas ialah kandungan terperinci Mengapa Set Regex Negated Saya Gagal dalam Go?. 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