Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell -Like vs-使用转义正则表达式特殊字符进行匹配_Powershell - Fatal编程技术网

Powershell -Like vs-使用转义正则表达式特殊字符进行匹配

Powershell -Like vs-使用转义正则表达式特殊字符进行匹配,powershell,Powershell,我试图在一个字符串中查找两个字符串,这些字符串包括正则表达式特殊字符。 我可以成功地使用这样的正则表达式 if ( ($logFileNameConstruct -Match [regex]::escape('[Px~Error]')) -and ($logFileNameConstruct -Match [regex]::escape('[Px~Status]')) ) { 但是我喜欢在没有特别需要的时候避免使用正则表达式,我的理解一直是-like总是在寻找文本字符串,所以我希望这方面能成功

我试图在一个字符串中查找两个字符串,这些字符串包括正则表达式特殊字符。 我可以成功地使用这样的正则表达式

if ( ($logFileNameConstruct -Match [regex]::escape('[Px~Error]')) -and ($logFileNameConstruct -Match [regex]::escape('[Px~Status]')) ) {
但是我喜欢在没有特别需要的时候避免使用正则表达式,我的理解一直是-like总是在寻找文本字符串,所以我希望这方面能成功

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

但它总是返回真实的。在百灵鸟上,我试着用双引号来表示。这两种方法都不起作用。

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

见:


没有转义它们的规定,因此在这种情况下,我认为您必须依赖
-match
和regex。

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

见:


没有转义它们的规定,所以在这种情况下,我认为您必须依赖
-match
和regex。

啊,不知怎的,我认为-Like没有通配符或特殊字符。谢谢你让我明白过来。啊,不知怎的,我觉得-Like没有通配符或特殊字符。谢谢你帮我澄清。
Get-Help about_Wildcards