Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Melaksanakan Set Negatif dalam Regex for Go: Panduan Mengelakkan Keputusan Tidak Dijangka

Cara Melaksanakan Set Negatif dalam Regex for Go: Panduan Mengelakkan Keputusan Tidak Dijangka

Susan Sarandon
Susan Sarandonasal
2024-10-26 07:23:02754semak imbas

 How to Implement Negative Set in Regex for Go: A Guide to Avoiding Unexpected Results

Melaksanakan Set Negatif dalam Regex for Go

Ungkapan biasa yang disediakan bertujuan untuk menangkap nama fail yang tidak berakhir dengan sambungan fail tertentu (cth. , htm, html, kelas, js). Walau bagaimanapun, pelaksanaan dalam Go menggunakan pakej regexp menghasilkan hasil yang berbeza daripada parser regex dalam talian.

Percanggahan ini timbul kerana enjin regex RE2 perpustakaan standard Go tidak menyokong pandangan negatif (iaitu, operator ?! yang digunakan dalam ungkapan asal). Akibatnya, ia tidak boleh mengecualikan rentetan yang berakhir dalam sambungan fail yang ditentukan.

Untuk meniru gelagat penghurai regex dalam talian, anda boleh mempertimbangkan pendekatan berikut:

  • Gunakan Pandangan Positif (?!.(htm|html|class|js)$): Ini menegaskan bahawa rentetan input tidak berakhir dengan salah satu sambungan fail yang ditentukan.
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
  • Gunakan Pandangan Negatif di Belakang (? Ini menegaskan bahawa rentetan input tidak didahului oleh mana-mana sambungan fail yang ditentukan.
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
  • Alih Keluar Set Negatif dan Gunakan Sambungan Fail Literal: Jika anda hanya perlu memastikan bahawa rentetan itu berakhir dalam sambungan fail tiga aksara, anda boleh mudahkan ungkapan kepada:
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>

Perhatikan bahawa ungkapan ini mungkin menghasilkan hasil yang berbeza apabila ia melaksanakan logik dengan cara yang berbeza. Memilih pendekatan yang paling sesuai dengan kes penggunaan anda adalah penting.

Atas ialah kandungan terperinci Cara Melaksanakan Set Negatif dalam Regex for Go: Panduan Mengelakkan Keputusan Tidak Dijangka. 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