从字符串中提取日期

时间:2014-08-06 12:45:28

标签: java regex

我想从java string中找到日期。但我无法做到这一点请帮助

String : 01-02-2014 <2>
Ineed output like :01-02-2014

我的代码:

public String rejex(String idate){
 String result = null;
 try{
    String regex = "([1-9]|[012][0-9]|3[01])[-/]\\s*(0[1-9]|1[012])[-/]\\s*((19|20)?[0-9]{2})";
    result = idate.replaceAll(regex, "$1-$2-$3");
 }catch(Exception e){}
    return result;

     }

3 个答案:

答案 0 :(得分:2)

你正在用自己替换你所追求的(日期段)。

如果你想提取它,这将有效:

    String regex = "(([1-9]|[012][0-9]|3[01])[-/]\\s*(0[1-9]|1[012])[-/]\\s*((19|20)?[0-9]{2})).*?<(\\d+)>";
    String str = "This is a random string 01-02-2014 <123> this is another part of that random string";

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    while(m.find())
    {
        System.out.println("Date: " + m.group(1));
        System.out.println("Number: " + m.group(6));
    }      

收率:

Date: 01-02-2014
Number: 123

答案 1 :(得分:0)

只提取\\d\\d-\\d\\d-\\d{4},让SimpleDateFormat执行解析工作。

答案 2 :(得分:0)

如果空间一直存在那么它很简单。

 String dateStr = "01-02-2014 <2>"
 String dateSplit[] = dateStr.split(" ");
 //dateSplit[0] is what u are looking for

 String dateStr = "01-02-2014 <2>"
 String dateSplit[] = dateStr.split("<");
 //dateSplit[0].trim() is what u are looking for

然后只需使用SimpleDateFormat将其转换为Date。