【问题标题】:Java - Regex extract date from stringJava - 正则表达式从字符串中提取日期
【发布时间】:2016-02-28 16:04:47
【问题描述】:

我需要从这个字符串中提取日期:

BB 通知:在 04/10 11:28 购买您的机票,最终卡号 xxxx,$ 00,00。如果您不认识请致电 40032 2412。

还有完整的日期 04/10/2015

日期模式为 dd/MM 或 dd/MM/yyyy

代码:

String mydata = "BB 通知:购买您的机票,最终卡号 xxxx,00,00 美元,04/10,11:28。如果您不认识,请致电 40032 2412。";

    Pattern p = Pattern.compile("(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.](19|20)\\d\\d");
    Matcher m = p.matcher(mydata);

结果: m.matches() == false

【问题讨论】:

  • 请发布一段代码,说明您到目前为止尝试过的内容以及失败的地方
  • 对不起,我现在发布了

标签: java regex date extract extraction


【解决方案1】:
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); 
  Matcher matcher = pattern.matcher(string);

        while (matcher.find()) {
            System.out.println("Full match: " + matcher.group(0));

        }

Pattern.MULTILINE 确保它正在搜索 DD/MM 或 DD/MM/YYYY 的匹配项(如果它存在于字符串中)

【讨论】:

    【解决方案2】:

    你可以试试这个正则表达式:

    Matcher m = Pattern.compile("(\\d{1,2}/\\d{1,2}/\\d{4}|\\d{1,2}/\\d{1,2})", Pattern.CASE_INSENSITIVE).matcher(string);
            while (m.find()) {
                System.out.println(m.group(1));
            }
    

    它正在寻找模式 DD/MM 或然后寻找 DD/MM/YYYY。

    查看Link

    【讨论】:

    • 它不起作用。我猜是因为日期前后都有文字。如果字符串中只有日期,这将起作用,但不是我的情况
    • 成功了。我复制了你的文本并为它形成了正则表达式。
    • 我可以支持。我复制了这段代码 sn-p 并针对 OP 的字符串运行它,它确实返回了日期。
    • @MadushanPerera 伙计,你知道我如何在 "$" 之后获得价值吗?如果价值是 0000,00 美元?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多