Regex 需要识别文件名中的特殊字符
我在正则表达式方面有点弱,所以我需要帮助检查文件名是否有这些特殊字符#%&*:?/{124;} 我试过这个,但不起作用:Regex 需要识别文件名中的特殊字符,regex,powershell,sharepoint,Regex,Powershell,Sharepoint,我在正则表达式方面有点弱,所以我需要帮助检查文件名是否有这些特殊字符#%&*:?/{124;} 我试过这个,但不起作用: $pattern = [regex]::Escape("#%&*:<>?/{|}") $filename = "XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf" If($filename -match $pattern){ write-host "Yes, file has special chars" }
$pattern = [regex]::Escape("#%&*:<>?/{|}")
$filename = "XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf"
If($filename -match $pattern){
write-host "Yes, file has special chars"
}
$pattern=[regex]::转义(“#%&*:?/{|}”)
$filename=“XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf”
If($filename-匹配$pattern){
写入主机“是,文件具有特殊字符”
}
它没有显示所需的结果。您可能需要字符类中的特殊字符,例如:
[#%&*:<>?/{|}]
*注意:我不是powershell用户,尽管我可以想象角色类的原理是类似的。正如我所提到的,使用角色类来实现这一点:
$pattern = "[#%&*:<>?/{|}]"
$filename = "XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf"
If($filename -match $pattern){
write-host "Yes, file has special chars"
}
$pattern=“[#%&*:?/{|}”
$filename=“XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf”
If($filename-匹配$pattern){
写入主机“是,文件具有特殊字符”
}
参考:
关于字符类的观点很好,但您肯定不想转义字符列表,包括所包含的
[…]
,因此我建议删除该部分。PowerShell使用.NET类型,它几乎支持所有现代正则表达式构造。顺便提一下:为了消除“…”
字符串中字符串插值可能产生的不必要的副作用,通常最好在PowerShell中的正则表达式中使用逐字“…”
字符串。
$pattern = "[#%&*:<>?/{|}]"
$filename = "XYZEF_MNY_001.SOW.AMD#2.08AUG2018-07AUG2019.pdf"
If($filename -match $pattern){
write-host "Yes, file has special chars"
}