使用正则表达式解析日期

时间:2014-12-15 07:41:44

标签: java regex string date

我使用正则表达式来解析字符串中的日期格式。它可能就像

1/1/11
01/01/11
01/01/2011
01/1/2011
1/11/2011
1/11/11
11/1/11

Java代码:

public static String getDateFromRemarks(String str) {
    String parsedDate = null;
    if (str != null) {
        String regex = ".*([0-3]?[0-9]/[0-3]?[0-9]/(?:[0-9]{2})?[0-9]{2}).*";

        Pattern pattern = Pattern.compile(regex);

        Matcher matcher = pattern.matcher(str);
        if (matcher.find()) {
            parsedDate = matcher.group(1);
        }
    }
    return parsedDate;
}

输入:

kjs22/12/2011 kjdflk   

输出:

2/12/2011

输入:

kjs2/12/2011 kjdflk   

输出:

2/12/2011 

我应该把日期作为

22/12/2011

1 个答案:

答案 0 :(得分:3)

这是因为您的初始.*。它吞没了所有东西然后回溯。

由于第一个数字在第一个数字之前是可选的,因此即使有两个数字,正则表达式也只满足一个数字。

将您的初始.*更改为[^\d]*