首頁  >  文章  >  後端開發  >  為什麼我的正規表示式否定集在 Go 中不起作用?

為什麼我的正規表示式否定集在 Go 中不起作用?

DDD
DDD原創
2024-10-27 11:05:02292瀏覽

Why Doesn't My Regex Negated Set Work in Go?

正規表示式否定集在Go 中不起作用

使用者遇到了一個問題,與線上正規表示式解析器相比,他們的正規表示式在Go 中的行為不同。目的是將檔案名稱與特定條件進行匹配,排除具有某些檔案副檔名的檔案名稱。然而,在表達式中使用否定集 (?!) 在 Go 中不會產生所需的結果。

Go 的RE2 引擎和缺乏Lookaround 支援

The Go 標準庫採用RE2 引擎,該引擎缺乏對某些功能的支持,包括前瞻運算符(? !這意味著 Go 不支援使用者表達式中使用的否定先行運算子。

使用簡化表達式的替代解決方案

要實現預期功能,使用者可以簡化符合檔案名稱所需特徵的表達式。可以使用更明確的模式來取代使用否定集,例如 .w{3}$:

  • 。表示句點。
  • w{3} 指定三個連續的單字字元(字母、數字或底線)。
  • $ 表示字串結尾。

這個簡化的表達式確保檔案名稱以三個字元的檔案副檔名結尾,而不需要否定集。

以上是為什麼我的正規表示式否定集在 Go 中不起作用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn