考虑像Windows风格的路径:
c:\foo bar\a\b\c\xtesty
什么是正则表达式验证文件名(上例中的 xtesty )是否包含单词“ test ”?
注意:这是一个正则表达式问题,使用.net中的System.IO等文件系统方法不是一个选项;
注2:由于stribizhev指向不同文化和操作系统中的路径分隔符存在一些差异。此问题仅适用于en-us和Windows,因此分隔符为/
上下文:我向用户提供了将正则表达式指定为匹配某些路径的设置的可能性。默认情况下,此正则表达式应该是 - 包含单词“test”
的任何文件名(不是整个路径!)答案 0 :(得分:1)
我建议使用这个正则表达式:
[^\\¥]*test[^\\¥]*$
请参阅demo
使用原子组快一点(不知道为什么.NET正则表达式引擎仍然不支持占有量词:():
(?>[^\\¥]*test)(?>[^\\¥]*$)
关键是除了\
路径分隔符之外还有其他分隔符,例如在日语操作系统中使用的YEN SIGN。此外,如果您打算让变量进入,则必须对其进行转义(以防万一,使用Regex.Escape
安全地播放)。
如果您打算仅支持类似英语的文化,请从正则表达式中删除¥
。