首頁 > 後端開發 > Golang > 主體

如何在 Go 的正規表示式中實現負集:避免意外結果的指南

Susan Sarandon
發布: 2024-10-26 07:23:02
原創
769 人瀏覽過

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

在Go 的正規表示式中實作負集合

提供的正規表示式旨在擷取不以特定檔案式旨在擷取不以特定檔案名稱結尾的檔案名稱(例如、htm、html、class、js)。然而,Go 中使用 regexp 套件的實作會產生與線上正規表示式解析器不同的結果。

出現這種差異是因為 Go 標準庫的 RE2 正規表示式引擎不支援負向查找(即,在原始表達)。因此,它無法排除以指定檔案副檔名結尾的字串。

要複製線上正規表示式解析器的行為,您可以考慮以下方法:

  • 使用正向前瞻(?!.(htm|html|class| js)$): 這斷言輸入字串不以指定的檔案副檔名之一結尾。
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
登入後複製
  • 使用負向後找出(? 這斷言輸入字串前面沒有任何指定的檔案副檔名。
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
登入後複製
  • 刪除負集並使用文字檔案副檔名:如果您只需要確保字串以三個字元的檔案副檔名結尾,您可以將表達式簡化為:
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>
登入後複製

請注意,這些表達式可能會產生不同的結果,因為它們以不同的方式實現邏輯。選擇最適合您的用例的方法至關重要。

以上是如何在 Go 的正規表示式中實現負集:避免意外結果的指南的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!