-Like vs -Match with escapeped RegEx special characters

时间:2017-07-22 01:58:57

标签: powershell

我正在尝试在字符串中查找两个字符串,并且字符串包含正则表达式特殊字符。 我可以成功使用像这样的RegEx

if ( ($logFileNameConstruct -Match [regex]::escape('[Px~Error]')) -and ($logFileNameConstruct -Match [regex]::escape('[Px~Status]')) ) {

但我喜欢在没有特别需要时避免使用RegEx,而且我的理解一直是--Like总是在寻找文字字符串,所以我期待用这个成功

if ( ($logFileNameConstruct -Like '*[Px~Error]*') -and ($logFileNameConstruct -Like '*[Px~Status]*') ) {

但它始终如一地返回真实。在云雀上我试过 - 和双引号一样。两种方式都不起作用。

1 个答案:

答案 0 :(得分:3)

方括号在通配符匹配中保留,以指定要匹配的字符范围(例如[0-5])或列表(例如[012345])。

请参阅:

Get-Help about_Wildcards

没有规定逃避它们,所以在这种情况下,我认为您将不得不依赖-match和正则表达式。