Java 如何从字符串中提取时间列表?

Java 如何从字符串中提取时间列表?,java,Java,我想从这个字符串中提取时间列表 20:00-24:00、17:00-21:00、6:30-9:00など、夜中心に募集!6:30-24:00の間で 1.日2.時間~OK!夏休みの短期も可 您可以使用以下正则表达式: ((?:[01]?\d|2[0-3]):[0-5]\d)-((?:[01]?\d|2[0-3]):[0-5]\d) 在一个范围内匹配。例如:15:56-23:10 然后可以将其与java.util.regex中的模式类结合使用,以找出输入字符串中的每个范围: Pattern patt

我想从这个字符串中提取时间列表

20:00-24:00、17:00-21:00、6:30-9:00など、夜中心に募集!6:30-24:00の間で 1.日2.時間~OK!夏休みの短期も可


您可以使用以下正则表达式:

((?:[01]?\d|2[0-3]):[0-5]\d)-((?:[01]?\d|2[0-3]):[0-5]\d)
在一个范围内匹配。例如:
15:56-23:10

然后可以将其与
java.util.regex
中的
模式
类结合使用,以找出输入字符串中的每个范围:

Pattern pattern = Pattern.compile("((?:[01]?\\d|2[0-3]):[0-5]\\d)-((?:[01]?\\d|2[0-3]):[0-5]\\d)");
Matcher matcher = pattern.matcher(input);
while(matcher.find()){
    String from = matcher.group(1);
    String to = matcher.group(2);
}
正则表达式:
([0-2]?\d:[0-5]\d)-(0-2]?\d:[0-5]\d)

在线测试:

Java实现:

import java.util.regex.Matcher;
import java.util.regex.Pattern;

final String regex = "([0-2]?\\d:[0-5]\\d)-([0-2]?\\d:[0-5]\\d)";
final String string = "20:00-24:00、17:00-21:00、6:30-9:00 など、夜中心に募集!6:30-24:00の間で 1日2時間~OK!夏休みの短期も可";

final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println("Full match: " + matcher.group(0));
    for (int i = 1; i <= matcher.groupCount(); i++) {
        System.out.println("Group " + i + ": " + matcher.group(i));
    }
}
import java.util.regex.Matcher;
导入java.util.regex.Pattern;
最后一个字符串regex=“([0-2]?\\d:[0-5]\\d)-([0-2]?\\d:[0-5]\\d)”;
最终字符串字符串=“20:00-24:00、17:00-21:00、6:30-9:00など、夜中心に募集!6:30-24:00の間で 1.日2.時間~OK!夏休みの短期も可";
最终模式=Pattern.compile(regex,Pattern.MULTILINE);
final Matcher Matcher=pattern.Matcher(字符串);
while(matcher.find()){
System.out.println(“完全匹配:+matcher.group(0));

对于(int i=1;我看到Java中的模式类可能与Try这个正则表达式重复:
([0-2]?\d:[0-5]\d)-(0-2]?\d:[0-5]\d)
()