我试图检查文本文件是否包含某些字符串。我的所有字符串都存储在一个变量中,我按照以下方式检查文件
ForEach ($word in ($words.split("|"))) {
if ($word -ne "" -and $word -ne $null) {
if ($textFile.toLower() -like '*'+$word.toLower()+'*') {
$contains = $true
}
}
}
(单词是一个包含不同字符串的字符串,其中包含一个|)。
这完全有效,除非我的字符串中有[]。当我的字符串中包含[]时,我将收到以下错误: (单词示例:警告:[] |错误:[] |处理路径失败:| FilesWithError:0 | VerboseErrors:<前两个单词出错。
The specified wildcard pattern is not valid: *warnings: []*
答案 0 :(得分:3)
您需要从$word
变量中转义元字符。
这是一种方法:
[Regex]::escape($word.toLower()).replace(']','\]')
我必须致电replace
,因为静态方法[Regex]::escape
转义的字符非常小,不包含]
。没有这个小帮助,最终的正则表达式将是无效的。
注意:我已在 Powershell 2.0 上测试了此代码。