いくつかの構成ファイルを解析して、一致するものを見つける必要があります。私はこれに問題を単純化しました。バックスラッシュがエスケープされている場合でも、powershell がバックスラッシュと一致しないのはなぜですか? 以下のコードからバックスペースを削除すると機能します。
$a で $b を検索:
$a="lorum [\test] ipsum"
$b="[\test]"
([regex]::Escape($a )) -match ([regex]::Escape($b))
いくつかの構成ファイルを解析して、一致するものを見つける必要があります。私はこれに問題を単純化しました。バックスラッシュがエスケープされている場合でも、powershell がバックスラッシュと一致しないのはなぜですか? 以下のコードからバックスペースを削除すると機能します。
$a で $b を検索:
$a="lorum [\test] ipsum"
$b="[\test]"
([regex]::Escape($a )) -match ([regex]::Escape($b))
これは、文字列自体をエスケープしているためです。前の部分-match
は通常の文字列である必要があり、後の部分は正規表現パターンである必要があります。コマンドが実際に行うことは、これらの文字列を比較することです (通常の文字列と考えてください)。
"lorum \[\\test\] ipsum" contains "[\test]"
これは決して真実ではありません。文字列$a
をエスケープされたパターンに一致させてみてください$b
:
$a="lorum [\test] ipsum"
$b="[\test]"
$a -match ([regex]::Escape($b))