2

いくつかの構成ファイルを解析して、一致するものを見つける必要があります。私はこれに問題を単純化しました。バックスラッシュがエスケープされている場合でも、powershell がバックスラッシュと一致しないのはなぜですか? 以下のコードからバックスペースを削除すると機能します。

$a で $b を検索:

$a="lorum [\test] ipsum"
$b="[\test]" 

([regex]::Escape($a )) -match ([regex]::Escape($b))
4

1 に答える 1

5

これは、文字列自体をエスケープしているためです。前の部分-matchは通常の文字列である必要があり、後の部分は正規表現パターンである必要があります。コマンドが実際に行うことは、これらの文字列を比較することです (通常の文字列と考えてください)。

"lorum \[\\test\] ipsum" contains "[\test]"

これは決して真実ではありません。文字列$aをエスケープされたパターンに一致させてみてください$b:

$a="lorum [\test] ipsum"
$b="[\test]" 

$a -match ([regex]::Escape($b))
于 2013-05-11T10:15:19.837 に答える