简体   繁体   English

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

[英]How can I extract list a time from string?

I want to extract the list of time from this string 我想从该字符串中提取时间列表

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

You can make use the following regex: 您可以使用以下正则表达式:

((?:[01]?\d|2[0-3]):[0-5]\d)-((?:[01]?\d|2[0-3]):[0-5]\d)

Which matches on a range. 匹配范围。 Eg: 15:56-23:10 . 例如: 15:56-23:10

This can then be used in conjunction with the Pattern class from java.util.regex , to find out every range in the input string: 然后可以将其与java.util.regexPattern类结合使用,以找出输入字符串中的每个范围:

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);
}

Regex: ([0-2]?\\d:[0-5]\\d)-([0-2]?\\d:[0-5]\\d) 正则表达式: ([0-2]?\\d:[0-5]\\d)-([0-2]?\\d:[0-5]\\d)

Online test: Link 在线测试: 链接

Java implementation: 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));
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM