使用Java正则表达式从字符串中提取数据
我有一根绳子 上午11:45、下午12:30、下午4:50 我希望第一次使用java正则表达式从这个字符串中提取 我创建了一个java正则表达式,如: “\d*\S\d*\S(上午|下午)”用于此使用Java正则表达式从字符串中提取数据,java,regex,string,Java,Regex,String,我有一根绳子 上午11:45、下午12:30、下午4:50 我希望第一次使用java正则表达式从这个字符串中提取 我创建了一个java正则表达式,如: “\d*\S\d*\S(上午|下午)”用于此 但是,我只能在Java中匹配此模式,而不能提取它。我如何使用我创建的正则表达式提取第一个标记,以及缺少的捕获括号。下面是应该对您有所帮助的代码示例 Pattern p = Pattern.compile("(\d*):(\d*)\s(AM|PM)"); Matcher m = p.matcher(st
但是,我只能在Java中匹配此模式,而不能提取它。我如何使用我创建的正则表达式提取第一个标记,以及缺少的捕获括号。下面是应该对您有所帮助的代码示例
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);
}
如果只想第一次提取,可以直接使用SimpleDataFormat的解析方法,如下所示:
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
希望这有帮助 重写为:Pattern p=Pattern.compile(“(\\d*):(\\d*)\\s(AM | PM)”;Matcher m=p.Matcher(ShowTime[i]);如果(m.find()){String hours=m.group(1);String minutes=m.group(2);String timeFormat=m.group(3);String finalTime=hours+“:“+minutes+”+timeFormat;}抱歉,无法尝试您的解决方案。谢谢你的帮助别担心,也许你将来会用到它:)