正则表达式匹配路径的文件名

时间:2015-09-01 09:47:01

标签: .net regex

考虑像Windows风格的路径:

c:\foo bar\a\b\c\xtesty

什么是正则表达式验证文件名(上例中的 xtesty )是否包含单词“ test ”?

注意:这是一个正则表达式问题,使用.net中的System.IO等文件系统方法不是一个选项;

注2:由于stribizhev指向不同文化和操作系统中的路径分隔符存在一些差异。此问题仅适用于en-us和Windows,因此分隔符为/

上下文:我向用户提供了将正则表达式指定为匹配某些路径的设置的可能性。默认情况下,此正则表达式应该是 - 包含单词“test”

的任何文件名(不是整个路径!)

1 个答案:

答案 0 :(得分:1)

我建议使用这个正则表达式:

[^\\¥]*test[^\\¥]*$

请参阅demo

使用原子组快一点(不知道为什么.NET正则表达式引擎仍然不支持占有量词:():

(?>[^\\¥]*test)(?>[^\\¥]*$)

关键是除了\路径分隔符之外还有其他分隔符,例如在日语操作系统中使用的YEN SIGN。此外,如果您打算让变量进入,则必须对其进行转义(以防万一,使用Regex.Escape安全地播放)。

如果您打算仅支持类似英语的文化,请从正则表达式中删除¥