POWERSHELL:用扩展字符串制作文字字符串

时间:2014-06-03 16:40:40

标签: variables powershell-v3.0 string-literals

我有一个字符串,我是从几个来源构建的,以便稍后进行匹配,到目前为止我的代码是:

$temp = "some\good"
if("some text" -match $temp)

我对$ temp的表示很简单,但实际上它是构建的,这是如何构建的一个示例,所以不,在这种情况下,更改“for”将文字传递给$ temp将不起作用。我硬编码如果使用$ temp的文字字符串版本,它的工作原理是将$ temp中的值转换为文字字符串。

运行代码时出现以下错误: 解析“some \ good” - 无法识别的转义序列\ g。 在[不重要] + if($ temp2 -match $ temp) + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~     + CategoryInfo:OperationStopped:(:) [],ArgumentException     + FullyQualifiedErrorId:System.ArgumentException

1 个答案:

答案 0 :(得分:1)

“转换为文字字符串”对您没有帮助。字符串是一个字符串,它只关系它的使用方式,即是否以某种方式解释内容。

-match对正则表达式进行操作,就是这样,你无法改变它,你必须逃避所有在正则表达式中有意义的字符。 但您可以使用select-string代替,它有一个简单匹配的开关:

$text = "some text"
$patt = "some\good"
if (($text | Select-String -SimpleMatch -Pattern $patt | Measure-Object).count -gt 0) {
    Write-Host "match"
} else {
    Write-Host "nomatch"
}