我有一个字符串 “上午11:45,下午12:30,下午04:50”
我希望使用java regex从这个字符串中第一次提取。
我创建了一个java正则表达式:
“\ d * \ S \ d * \ s(AM | PM)”为此。
但是我只能在Java中匹配这种模式而不是提取它。如何使用我创建的正则表达式提取第一个令牌
答案 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
希望这有帮助!