求一个正则表达式识别windows文件路径及共享路径

langhunld 2012-03-07 10:49:35
我想要匹配的路径有两种:一是类似于"C:\test\test"或"V:\asf\"这种windows的路径,别一种是类似于"\\ip\test"或"\\ip\test\"这类网络路径,我想有 一个 可以 同时识别 这两种路径 的正则表达式。
请高手赐教!如果不能合成一个正则表达式,分别用两种也可以。
我是在Powershell中用"string" -math "Regex"的方式来判断,如果在Powershell中测试通过就更好了!
...全文
539 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
langhunld 2012-03-10
  • 打赏
  • 举报
回复
OK,谢过!
langhunld 2012-03-09
  • 打赏
  • 举报
回复
完美了,膜拜之!
方便解释一下“$dir = '\\[^\\\\/:*?"<>|]+'”这句的意思吗?我不太明白为什么会有四个:"\\\\",还有,我自己在写了一个类似这样的:“[^!@#$%]”匹配模式,但用"a@" -match “[^!@#$%]”总是返回true,只有"@" -match “[^!@#$%]”这样才会返回false,不明白你这里为什么可以用“[^\\\\/:*?"<>|]”来正确匹配。

[Quote=引用 3 楼 jshi123 的回复:]

$dir = '\\[^\\\\/:*?"<>|]+'
$pattern = "^([a-zA-Z]:|\\$dir)($dir)*\\?$"
"C:\test\test" -match $pattern
"V:\asf\" -match $pattern
"\\ip\test" -match $pattern
"\\ip\test\" -match $pattern
[/Quote]
jshi123 2012-03-09
  • 打赏
  • 举报
回复
$dir = '\\[^\\\\/:*?"<>|]+'
$pattern = "^([a-zA-Z]:|\\$dir)($dir)*\\?$"
"C:\test\test" -match $pattern
"V:\asf\" -match $pattern
"\\ip\test" -match $pattern
"\\ip\test\" -match $pattern
jshi123 2012-03-09
  • 打赏
  • 举报
回复
是我写错了,应该是两个杠,表示不匹配单斜杠,第一个斜杠是转义,4个杠重复了。
$dir 表示以斜杠开头,后面跟一串合法的路径名称(至少一个字符),用来匹配一个目录项。
其实路径匹配挺复杂的,上面这个肯定也还有错,比如目录名中有空格应该是合法的,但全空格应该是错的,
还有\\开头如果是ip,应该检查ip格式,现在这个表达式都没考虑。
langhunld 2012-03-08
  • 打赏
  • 举报
回复
那个不是我想要的,我自己也不会写……

110,567

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧