为什么这个正则表达式失败了?

时间:2011-04-08 07:15:14

标签: java regex

我有一个PCL文件并用Notepad ++打开它来查看源代码(使用PCL Viewer我看到了最终结果,但我也需要查看源代码)。

enter image description here

请参阅实验室编号和其他字符。 我能够使用此正则表达式提取实验室编号及其代码:

private static String PATTERN_LABNUMBER = "Lab Number[\\W\\D]*(\\d*)";

它给了我:

0092616281

我现在想要提取Date Reported并使用这个正则表达式(在经过很多其他尝试之后):

private static String PATTERN_DATE_REPORTED =
        "Date Reported[\\W\\D]*(\\d\\d/\\d\\d/\\d\\d\\d\\d \\d\\d:\\d\\d)";

但它在PCL文件中找不到它。

我也尝试过:

private static String PATTERN_DATE_REPORTED =
        "Date Reported[\\W\\D]*([0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2})";

但同样没有找到结果...... 你看到我在最后一个正则表达式中遗漏了什么吗?

非常感谢!

更新

我使用此java代码提取实验室编号和报告日期:

 public String extractWithRegEx(String regextype, String input) {
        String matchedString = null;

        if (regextype != null && input != null) {
            Matcher matcher = Pattern.compile(regextype).matcher(input);
            if (matcher.find()) {
                System.out.println("Matcher found for regextype "+regextype);
                matchedString = matcher.group(0);
                if (matcher.groupCount() > 0) {
                    matchedString = matcher.group(1);
                }
            }
        }
        return matchedString;
    }

1 个答案:

答案 0 :(得分:2)

这是完成你想要的代码..

       Pattern pattern =  Pattern.compile("Date Reported.*(\\d{2}/\\d{4} \\d{2}:\\d{2})$", Pattern.MULTILINE);
        String st = "date dfdsfsd fgfd gdfgfdgdf gdfgdfg gdfgdf 3232/22/2010 23:34\n"+
        "dsadsadasDate Reported gdfgfd gdfgfdgdf gdfgdfg gdfgdf 3232/22/2010 23:34";
        Matcher matcher = pattern.matcher(st);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }