Java Regex适用于两个字符串

时间:2016-04-12 14:20:08

标签: java regex string

我需要Java Regex的帮助。我有一个文件名字符串,可以有以下格式之一:

  

数yyyymmdd.text_1.xml

OR

  

yyyymmdd.text_1.xml

我能够得到< number>和< yyyymmdd>从第一种格式使用下面的正则表达式:

"\\-(.*?)\\." - 给我yyyymmdd

"(.*?)\\-"; - 给我编号

但是使用第二种格式(即使用< yyyymmdd> .text_1.xml),它会抛出错误并且不会返回< yyyymmdd>。我需要一个适用于两种字符串的日期格式的正则表达式。

你能帮忙吗?

1 个答案:

答案 0 :(得分:2)

此正则表达式为format-1提供了数字和日期,并为format-2提供了空字符串和日期

public static void main(String[] args)  {
    String s1 = "number-20150606.text_1.xml";
    String s2 = "20150606.text_1.xml";

    Pattern p =Pattern.compile("(.*?)-?(\\d{8})");
    Matcher m = p.matcher(s1);
    while(m.find()) {

        System.out.println(m.group(1));
        System.out.println(m.group(2));
    }
    m = p.matcher(s2);
    while(m.find()) {

        System.out.println(m.group(1));
        System.out.println(m.group(2));
    }
}

O / P:

number
20150606
          // Empty String here.
20150606