Java - 使用正则表达式从字符串中提取日期 - 失败

标签 java regex date

我正在尝试使用正则表达式从字符串中提取 2 个日期 - 由于某种原因 - 正则表达式不提取日期 - 这是我的代码:

private  String[] getDate(String desc) {
    int count=0;
    String[] allMatches = new String[2];
    Matcher m = Pattern.compile("(0[1-9]|[12][0-9]|3[01])[- /.](0[1-9]|1[012])[- /.](19|20)\\d\\d(?:,)").matcher(desc);
    while (m.find()) {
        allMatches[count] = m.group();
    }
    return allMatches;
}

我的 string-desc 是:“coming from the 11/25/2009 to the 11/30/2009” 然后我得到一个空数组...

最佳答案

您的正则表达式首先匹配日,然后匹配月 (DD/MM/YYYY),而您的输入从月开始,然后是日 (MM/DD/YYYY)。

此外,您的日期后面必须跟一个逗号才能匹配((?:,) 部分)。

这个应该适合您的需求:

(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\d\d

Regular expression visualization

图表 Debuggex .

关于Java - 使用正则表达式从字符串中提取日期 - 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18591242/

相关文章:

Swift 相当于 C gmtime?

date - 经典 Asp 日期

java - Maven:将自定义外部 JAR 链接到我的项目的最佳方式?

php - 从字符串的每个新行的开头删除空格

java - 以特殊方式拆分字符串

javascript 日期比较

java - 如何在android中创建一个全局变量?

java - 为什么不推荐错误处理?

java - Android 应用程序作为 Kiosk 工作

javascript - 在 RegEx (JavaScript) 中正确转义变量