提取嵌入String中的日期和模式的最佳方法

时间:2017-01-05 14:55:57

标签: java

我想从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"

...或此结果的第一个值的位置。

所有可能的模式都是事先知道的。

我不知道如何以优雅和高效的方式实现这一点。

1 个答案:

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

现在根据输入的必要模式编辑正则表达式。

请注意,检查指定日期是否有效。

修改:根据评论添加了两行。