我使用正则表达式来解析字符串中的日期格式。它可能就像
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
答案 0 :(得分:3)
这是因为您的初始.*
。它吞没了所有东西然后回溯。
由于第一个数字在第一个数字之前是可选的,因此即使有两个数字,正则表达式也只满足一个数字。
将您的初始.*
更改为[^\d]*
。