我想要匹配的路径有两种:一是类似于"C:\test\test"或"V:\asf\"这种windows的路径,别一种是类似于"\\ip\test"或"\\ip\test\"这类网络路径,我想有 一个 可以 同时识别 这两种路径 的正则表达式。
请高手赐教!如果不能合成一个正则表达式,分别用两种也可以。
我是在Powershell中用"string" -math "Regex"的方式来判断,如果在Powershell中测试通过就更好了!
请高手赐教!如果不能合成一个正则表达式,分别用两种也可以。
我是在Powershell中用"string" -math "Regex"的方式来判断,如果在Powershell中测试通过就更好了!
$pattern = "^([a-zA-Z]:|\\$dir)($dir)*\\?$"
"C:\test\test" -match $pattern
"V:\asf\" -match $pattern
"\\ip\test" -match $pattern
"\\ip\test\" -match $pattern
方便解释一下“$dir = '\\[^\\\\/:*?"<>|]+'”这句的意思吗?我不太明白为什么会有四个:"\\\\",还有,我自己在写了一个类似这样的:“[^!@#$%]”匹配模式,但用"a@" -match “[^!@#$%]”总是返回true,只有"@" -match “[^!@#$%]”这样才会返回false,不明白你这里为什么可以用“[^\\\\/:*?"<>|]”来正确匹配。
$dir 表示以斜杠开头,后面跟一串合法的路径名称(至少一个字符),用来匹配一个目录项。
其实路径匹配挺复杂的,上面这个肯定也还有错,比如目录名中有空格应该是合法的,但全空格应该是错的,
还有\\开头如果是ip,应该检查ip格式,现在这个表达式都没考虑。