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

Susan Sarandon
Lepaskan: 2024-10-26 07:23:02
asal
769 orang telah melayarinya

 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>
Salin selepas log masuk
  • 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>
Salin selepas log masuk
  • 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>
Salin selepas log masuk

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!

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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!