使用Java Regex从String中提取数据

时间:2011-11-20 15:27:23

标签: java regex string

我有一个字符串 “上午11:45,下午12:30,下午04:50”

我希望使用java regex从这个字符串中第一次提取。

我创建了一个java正则表达式:

“\ d * \ S \ d * \ s(AM | PM)”为此。

但是我只能在Java中匹配这种模式而不是提取它。如何使用我创建的正则表达式提取第一个令牌

2 个答案:

答案 0 :(得分:5)

捕捉括号丢失的地方。以下是可以帮助您的代码示例。

Pattern p = Pattern.compile("(\d*):(\d*)\s(AM|PM)");
Matcher m = p.matcher(str);
if (m.find()) {
    String hours = m.group(1);
    String minutes = m.group(2);
}

答案 1 :(得分:2)

如果您只想第一次提取,可以直接使用SimpleDateFormat的解析方法,如下所示:

    String testString = " 11:45 AM, 12:30 PM, 04:50 PM ";

    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm aa");
    Date parsedDate = sdf.parse(testString);

    System.out.println(parsedDate);

从api,partse方法:“从给定字符串的开头解析文本以产生日期”,因此它将忽略其他两个日期。

关于模式:

hh --> hours in am/pm (1-12)
mm --> minutes
aa --> AM/PM marker

希望这有帮助!