我想从该字符串中提取时间列表
20:00-24:00、17:00-21:00、6:30-9:00など,夜中心に募集!6:30-24:00の间で1日2时间〜OK!夏休みの短期も可
答案 0 :(得分:0)
您可以使用以下正则表达式:
((?:[01]?\d|2[0-3]):[0-5]\d)-((?:[01]?\d|2[0-3]):[0-5]\d)
在范围上匹配。例如:15:56-23:10
。
然后可以将其与Pattern
中的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);
}
答案 1 :(得分:0)
正则表达式:([0-2]?\d:[0-5]\d)-([0-2]?\d:[0-5]\d)
在线测试:Link
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));
}
}