ホームページ  >  記事  >  バックエンド開発  >  Go の Regex でネガティブ セットを実装する方法: 予期しない結果を回避するためのガイド

Go の Regex でネガティブ セットを実装する方法: 予期しない結果を回避するためのガイド

Susan Sarandon
Susan Sarandonオリジナル
2024-10-26 07:23:02754ブラウズ

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

Regex for Go でのネガティブ セットの実装

提供された正規表現は、特定のファイル拡張子で終わらないファイル名をキャプチャすることを目的としています。 、htm、html、クラス、js)。ただし、regexp パッケージを使用した Go での実装は、オンライン正規表現パーサーとは異なる結果を生成します。

この矛盾は、Go 標準ライブラリの RE2 正規表現エンジンが否定先読み (つまり、独自の表現)。その結果、指定されたファイル拡張子で終わる文字列を除外できません。

オンライン正規表現パーサーの動作を再現するには、次のアプローチを検討できます:

  • ポジティブ先読みを使用する (?!.(htm|html|class|js)$): これは、入力文字列が指定されたファイル拡張子のいずれかで終わらないことをアサートします。
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
  • Use a Negative Lookbehind (? これは、入力文字列の前に指定されたファイル拡張子がないことをアサートします。
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
  • ネガティブ セットを削除してリテラル ファイル拡張子を使用する: 文字列が 3 文字のファイル拡張子で終わることだけを確認する必要がある場合は、次のことができます。式を次のように簡略化します。
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>

これらの式はロジックを異なる方法で実装するため、異なる結果が生じる可能性があることに注意してください。ユースケースに最適なアプローチを選択することが重要です。

以上がGo の Regex でネガティブ セットを実装する方法: 予期しない結果を回避するためのガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。