Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Java正则表达式从字符串中提取数据_Java_Regex_String - Fatal编程技术网

使用Java正则表达式从字符串中提取数据

使用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

我有一根绳子 上午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(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;}抱歉,无法尝试您的解决方案。谢谢你的帮助别担心,也许你将来会用到它:)