Java 包含至少包含一个非数字字符的文件名的路径的正则表达式
假设我有一些文件Java 包含至少包含一个非数字字符的文件名的路径的正则表达式,java,regex,Java,Regex,假设我有一些文件 \\foo\bar\12345.xml \\foo\bar\23456.xml \\foo\bar\12hellothere.xml \\foo\bar\34youpeople.xml 前两个文件的特点是文件名中仅包含数字,不包括扩展名。最后两个不完全由数字组成 目录名可以包含空格和数字 是否有人拥有匹配最后两个文件而不是前两个文件的正则表达式 如果相关的话,我将用Java实现它 基本上,我认为它归结为not.\\\ d+.xml,但我不知道如何指定not。仅用于文件名: [
\\foo\bar\12345.xml
\\foo\bar\23456.xml
\\foo\bar\12hellothere.xml
\\foo\bar\34youpeople.xml
前两个文件的特点是文件名中仅包含数字,不包括扩展名。最后两个不完全由数字组成
目录名可以包含空格和数字
是否有人拥有匹配最后两个文件而不是前两个文件的正则表达式
如果相关的话,我将用Java实现它
基本上,我认为它归结为not.\\\ d+.xml,但我不知道如何指定not。仅用于文件名:
[0-9][0-9][a-z]+
文件名+.xml:
[0-9][0-9][a-z]+.xml
Fie名称,但开头有两个以上数字:
[0-9]+[a-z]+
有一个站点,您可以在此处测试正则表达式:
最好的正则表达式可能是: 为了清晰起见,仅用于文件名 \w*\D\w*.xml 注:考虑到你认为任何不是数字的东西都是有效的,比如10×10XML 编辑:如果您希望它是一封信: \w*[a-zA-Z]\w*.xml 试试这个
String[] s = {
"\\\\foo\\bar\\12345.xml",
"\\\\foo\\bar\\23456.xml",
"\\\\foo\\bar\\12hellothere.xml",
"\\\\foo\\bar\\34youpeople.xml",
"34youpeople.xml",
};
for (String e : s)
System.out.println(e + " -> " + e.matches("(.*\\\\)?\\d+[a-zA-Z]+\\.xml"));
结果:
\\foo\bar\12345.xml -> false
\\foo\bar\23456.xml -> false
\\foo\bar\12hellothere.xml -> true
\\foo\bar\34youpeople.xml -> true
34youpeople.xml -> true
这个
^*\\\xml*$
这是一种方法
灵感来源于Simplest:[a-zA-Z][^\\]*\.xml-确保最后一个字母后面有一个字母字符``