包含至少包含一个非数字字符

时间:2016-04-15 08:44:28

标签: java regex

假设我有一些文件

\\foo\bar\12345.xml
\\foo\bar\23456.xml
\\foo\bar\12hellothere.xml
\\foo\bar\34youpeople.xml

前两个的特点是文件名中只有数字(不包括扩展名)。最后两个并不完全由数字组成。

目录名可以包含空格和数字。

有没有人有一个与 last 两个文件匹配的正则表达式,而不是前两个?

我在Java中实现这一点,如果这完全相关的话。

基本上我认为归结为.*\\\d+.xml,但我不知道如何指定而不是

4 个答案:

答案 0 :(得分:0)

仅限文件名: [0-9] [0-9] [A-Z] +

文件名+ .xml: [0-9] [0-9] [A-Z] +。XML

Fie名称,但开头有两个以上的数字: [0-9] + [A-Z] +

有一个网站可以在这里测试你的正则表达式: regexp

答案 1 :(得分:0)

最好的正则表达式可能是:

(仅限文件名,为清晰起见)

  

\ W * \ d \ W *的.xml

注意:考虑到您考虑的任何数字都不是有效数字,例如10 10.xml

编辑:如果您希望它成为一封信:

  

\ W * [A-ZA-Z] \ W *的.xml

答案 2 :(得分:0)

试试这个

    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

答案 3 :(得分:0)

^((?!(.*\\\d+.xml)).)*$

是一种方式。

灵感来自Regular expression to match a line that doesn't contain a word?