【问题标题】:Regex: How to include character of "if" condition正则表达式:如何包含“if”条件的字符
【发布时间】:2014-12-13 13:08:59
【问题描述】:

我正在使用 java 中的正则表达式制作日期提取器。问题是日期是 20-05-2014,而我的程序正在提取 0-5-14。简而言之,我怎样才能得到我正在检查日期的第二个字符的字符?

    int count = 0;
    String data = "HellowRoldsThisis20-05-2014. farhan_rock@gmail.comHellowRoldsThisis.farhan@gmail.com";
    String regexOfDate = "((?<=[0])[1-9]{2})|((?<=[12])[0-9])|((?<=[3])[01])\\.\\-\\_((?<=[0])[1-9])|((?<=[1])[0-2])\\.\\-\\_((?<=[2])[0-9]{4})"; \\THE PROBLEM
    String[] extractedDate = new String[1000];
    Pattern patternDate = Pattern.compile(regexOfDate);
    Matcher matcherDate = patternDate.matcher(data);

    while(matcherDate.find()){           
        System.out.println("Date "+count+"Start: "+matcherDate.start());
        System.out.println("Date "+count+"End  : "+matcherDate.end());
        extractedDate[count] = data.substring(matcherDate.start(), matcherDate.end());
        System.out.println("Date Extracted: "+extractedDate[count]);
    }

【问题讨论】:

    标签: java regex


    【解决方案1】:

    你可以试试正则表达式:

    // (0[1-9]|[12][0-9]|[3][01])[._-](0[1-9]|1[0-2])[._-](2[0-9]{3})
    "(0[1-9]|[12][0-9]|[3][01])[._-](0[1-9]|1[0-2])[._-](2[0-9]{3})"
    

    【讨论】:

    • 如何绘制正则表达式?
    【解决方案2】:

    匹配有效日期的单个正则表达式是awful

    我愿意:

    String regexOfDate = "(?<!\\d)\\d{2}[-_.]\\d{2}[-_.]\\d{4}(?!\\d)";
    

    提取潜在日期,然后测试它是否有效。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-21
      • 1970-01-01
      • 2021-01-05
      • 1970-01-01
      相关资源
      最近更新 更多