Go の正規表現エンジンにおける否定セットを理解する
Go では、標準ライブラリの正規表現エンジン (RE2) には、次のようなルックアラウンドのサポートがありません。負の先読み演算子 ?!指定された正規表現で使用されるもの:
^(.*\.(?!(htm|html|class|js)$))?[^.]
この正規表現は、特定のファイル拡張子で終わらない文字列と一致することを目的としています。ただし、Go では、ルックアラウンド サポートがないため、期待どおりに機能しません。
代替ソリューション
否定セットに依存する代わりに、代替ソリューションがあります。 Go でこのシナリオを処理するソリューション:
ファイル拡張子を直接検証:
否定されたセットを目的のファイル拡張子の直接チェックで置き換えます:
re.MustCompile(`(type1|type2)_(\d+)\.(csv|ini)`)
末尾のピリオドを削除:
文字列が追加文字なしで 3 文字のファイル拡張子で終わるようにすることが目的の場合、簡略化された
re.MustCompile(`\.\w{3}$`)
Matching Behavior
否定されたセットを削除するか、代替構文を使用することにより、Go の正規表現エンジンは正確に期待どおり、目的の文字列と一致します。
以上がGo の正規表現エンジンで特定のファイル拡張子を持たない文字列を照合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。