java - 提取字符串中嵌入的日期和模式的最佳方法

标签 java

<分区>

我想从字符串中提取日期/时间模式。

例如有3个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"

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

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

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

最佳答案

这样的事情怎么样:

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

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

请记住,这不会检查给定日期是否有效。

编辑:根据评论添加了两行。

关于java - 提取字符串中嵌入的日期和模式的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41488061/

相关文章:

java - Spring 在 View 中创建集合

java - 如何区分 Java 中的 Varargs 和 Array 类型

java - Derby:引用来自不同表的多个外键

java - 维吉尼亚加密

java - 在Java中打印二维数组 radio

java - 如何根据 Apache POI 中另一个单元格中的值禁用单元格中的编辑?

java - 将中型代码库从 Java 1.4.2 迁移到 Java 5 的策略

Java/抽象语法树到 XML 表示

java - 如何在 ANTLR3 TreeParser 中获取行号

java - 从字符串设置背景可绘制资源