【问题标题】:Extract date from a string [duplicate]从字符串中提取日期[重复]
【发布时间】:2014-09-29 09:53:42
【问题描述】:

我想从 java 字符串中查找日期。但是我无法做到这一点,请帮忙

String : 01-02-2014 <2>
Ineed output like :01-02-2014

我的代码:

public String rejex(String idate){
 String result = null;
 try{
    String regex = "([1-9]|[012][0-9]|3[01])[-/]\\s*(0[1-9]|1[012])[-/]\\s*((19|20)?[0-9]{2})";
    result = idate.replaceAll(regex, "$1-$2-$3");
 }catch(Exception e){}
    return result;

     }

【问题讨论】:

  • 您只想删除除dd-mm-yyyy之外的所有内容?
  • 是删除除 dd-mm-yyyy 以外的所有内容
  • 您不只是在提取,您还想验证日期吗?
  • 是的,我想验证日期

标签: java regex


【解决方案1】:

你正在用他们自己替换你所追求的(日期段)。

如果你想提取它,这将起作用:

    String regex = "(([1-9]|[012][0-9]|3[01])[-/]\\s*(0[1-9]|1[012])[-/]\\s*((19|20)?[0-9]{2})).*?<(\\d+)>";
    String str = "This is a random string 01-02-2014 <123> this is another part of that random string";

    Pattern p = Pattern.compile(regex);
    Matcher m = p.matcher(str);
    while(m.find())
    {
        System.out.println("Date: " + m.group(1));
        System.out.println("Number: " + m.group(6));
    }      

产量:

Date: 01-02-2014
Number: 123

【讨论】:

  • 如何让 2 进入
  • @user2601972:请查看我的更新。
【解决方案2】:

只需将\\d\\d-\\d\\d-\\d{4} 提取出来,让SimpleDateFormat 完成解析工作。

【讨论】:

  • 我能有这个的正则表达式代码吗
  • 很难确定提取的字符串是否是正则表达式的有效日期。例如。我的答案中的29-02-2000 (valid)29-02-2013 (invalid) \\d\\d.... 是提取“日期字符串”的正则表达式。但您需要通过 SimpleDateFormat 检查它是否是有效日期。 @user2601972
【解决方案3】:

如果空间一直都在那里,那就很简单了。

 String dateStr = "01-02-2014 <2>"
 String dateSplit[] = dateStr.split(" ");
 //dateSplit[0] is what u are looking for

 String dateStr = "01-02-2014 <2>"
 String dateSplit[] = dateStr.split("<");
 //dateSplit[0].trim() is what u are looking for

然后简单地使用 SimpleDateFormat 将其转换为日期。

【讨论】:

    猜你喜欢
    • 2014-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-17
    • 1970-01-01
    相关资源
    最近更新 更多