适用于两个字符串的Java正则表达式

适用于两个字符串的Java正则表达式,java,regex,string,Java,Regex,String,我需要一个Java正则表达式的帮助。我有一个文件名字符串,它可以有以下格式之一: 编号-yyyymmdd.text_1.xml 或 yyyymmdd.text_1.xml 我可以使用以下正则表达式从第一种格式中获取和: “\\-(.*?\”-给我yyyymmdd “(.*?\ \-”-给我一个号码 但对于第二种格式(即.text_1.xml),它会抛出错误,并且不会返回。我需要一个正则表达式的日期格式,将与两个字符串 您能帮忙吗?此正则表达式为格式1提供数字和日期,为格式2提供空字符串和日期 p

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

编号-yyyymmdd.text_1.xml

yyyymmdd.text_1.xml

我可以使用以下正则表达式从第一种格式中获取和:

“\\-(.*?\”
-给我yyyymmdd

“(.*?\ \-”-给我一个号码

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


您能帮忙吗?

此正则表达式为格式1提供数字和日期,为格式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:


此正则表达式为格式1提供数字和日期,为格式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:


非常感谢。这非常有帮助。谢谢!!这很有帮助。