当你使用 –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
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!