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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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
Regex 需要识别文件名中的特殊字符_Regex_Powershell_Sharepoint - Fatal编程技术网

Regex 需要识别文件名中的特殊字符

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" }

我在正则表达式方面有点弱,所以我需要帮助检查文件名是否有这些特殊字符#%&*:?/{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]::转义(“#%&*:?/{|}”)
$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"
}