我想从String中提取日期/时间模式。
例如,有三个字符串:
1: "current date: 01/05/2017."
2: "The start date was 15.11.2016."
3: "Christmas (24.12) was on saturday.
我需要的第一个信息是模式:
1: "MM/dd/yyyy"
2: "dd.MM.yyyy"
3: "dd.MM"
第二个信息是提取的日期部分:
1: "01/05/2017"
2: "15.11.2016"
3: "24.12"
...或此结果的第一个值的位置。
所有可能的模式都是事先知道的。
我不知道如何以优雅和高效的方式实现这一点。
答案 0 :(得分:1)
这样的事情怎么样:
String regex = "(\\d{2}/\\d{2}/\\d{4})";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher("current date: 01/05/2017.");
if (matcher.find()) {
start = matcher.start(); // start index of match
end = matcher.end(); // end index of match
result = matcher.group(1);
}
现在根据输入的必要模式编辑正则表达式。
请注意,不检查指定日期是否有效。
修改:根据评论添加了两行。