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-确保最后一个字母后面有一个字母字符``