PowerShell转义通配符


当你使用 –like操纵符,它支持3个通配符,”*“代表任意个数的字符,”?“代表一个字符,“[a-z]”代表一个字符列表。然而PowerShell中转义字符“`”(反引号)很少有人知道,它可以转义通配符。

所以,当你想验证“*”是否在某个字符串中,你可能会写成这样,实际上这样恰恰错了。

'*abc' -like '*abc'

之所以错,是因为下面的字符串也会被匹配返回true:

'xyzabc' -like '*abc'

因此如果要验证 “*”,一定得保证它不是通配符,此时就需要转义字符:

PS> '*abc' -like '`*abc'
True

PS> 'xyzabc' -like '`*abc'
False

当你想匹配反引号时,同样也需要转义字符

# 错误:
PS> "xyzabc" -like "`*abc"
True

# 正确:
PS> "xyzabc" -like "``*abc"
False

PS> "*abc" -like "``*abc"
True

原文链接:Escape Wildcards

本文链接: https://www.pstips.net/escape-wildcards.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注