我正在尝试在字符串中查找两个字符串,并且字符串包含正则表达式特殊字符。 我可以成功使用像这样的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]*') ) {
但它始终如一地返回真实。在云雀上我试过 - 和双引号一样。两种方式都不起作用。
答案 0 :(得分:3)
方括号在通配符匹配中保留,以指定要匹配的字符范围(例如[0-5]
)或列表(例如[012345]
)。
请参阅:
Get-Help about_Wildcards
没有规定逃避它们,所以在这种情况下,我认为您将不得不依赖-match
和正则表达式。