Powershell的搜索字符串Containig $

问题描述:

我要搜索以下字符串中的文本文件:$$u$$

我试过select-stringget-content.Contains。在我看来,这是不可能的。

我用它进行搜索作为变量:$ToSearch = "'$'$u'$'$"

它总是提供虚假的结果。

有没有人知道解决方案?

这是因为大多数搜索过滤器都依赖于正则表达式。在正则表达式$符号需要转义

不知道更多的你要完成我不能给太多的例子了什么,但这里是一个:

'this is a $$u$$ test' -replace "\$","" 

的“\”就是逃避角色 - 意味着从字面上翻译它。

编辑:每评论

$Val = 'this is a $$u$$ test' 
$Val | Select-String "\$+\w\$+" -quiet 

-Quiet开关返回T/F,而不是一个字符串值。

+0

我只想有一个二进制答案(TRUE/FALSE)是否可以在文本文件中找到该字符串。更多的行可以包含这个,但是一个事件已经足以获得TRUE结果。 – jarvasm 2014-09-24 13:09:25

+0

使用可能更有帮助的东西编辑回答 – 2014-09-24 13:15:15

$是正则表达式中的保留字符,这会使搜索更加复杂。

Select-String的默认搜索模式类型是正则表达式,但您也可以指定-Simplematch-Wildcard,其中任何一个都不需要转义$。如果您使用-Wildcard,则需要在比赛的任何一端包含wilcard * '*$$u$$*'。为了简单匹配,只需使用您想匹配的字符串 - '$$u$$'

+1

只要不要忘记单引号模式,因为'$'也是PowerShell中的特殊字符,并且使用双引号字符串进行评估。 – 2014-09-24 14:32:06

+0

$ true dat。最佳做法是在字符串包含明确想要展开的变量和/或子表达式时仅加双引号。 – mjolinor 2014-09-24 14:39:40