我有一个文本,其中也包含这种日期:'Date Reported26/09/2010 08:22
'我想用正则表达式提取日期(因为这个税的日期不同,所以我使用这个正则表达式:
private static String PATTERN_DATE_REPORTED = "Date Reported[0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2}";
并执行以下提取:
if ((value = extractWithRegEx(PATTERN_DATE_REPORTED, text)) != null) {
DateFormat df = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
try {
metadata.setDateReported(df.parse(value));
System.out.println("Succesfully converted report date: "+metadata.getDateReported().toString());
} catch (ParseException e) {
System.out.println("Exception occured when converting report date: "+ e.getMessage());
}
}else{
System.out.println("Date Reported not found by this regex");
}
其中extractWithRegEx的定义如下:
public String extractWithRegEx(String regextype, String input) {
String matchedString = null;
if (regextype != null && input != null) {
Matcher matcher = Pattern.compile(regextype).matcher(input);
if (matcher.find()) {
matchedString = matcher.group(0);
if (matcher.groupCount() > 0) {
matchedString = matcher.group(1);
}
}
}
return matchedString;
}
问题:根据上述正则表达式找不到我的日期。
我非常肯定 extractWithRegEx
是正确的,因为它适用于其他正则表达式来查找其他类型的文本但是对于这个日期我觉得其他代码中有问题。 ..你能看到这个问题吗?
答案 0 :(得分:3)
你缺少正则表达式的圆括号。
private static String PATTERN_DATE_REPORTED = "Date Reported([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})";