我有一个PCL文件,并用Notepad ++打开它来查看源代码(使用PCL Viewer查看最终结果,但我也需要查看源代码)。为什么这个正则表达式失败?
请参阅实验室数量和字符的其余部分。 我能够提取实验室数及其与此正则表达式代码:
private static String PATTERN_LABNUMBER = "Lab Number[\\W\\D]*(\\d*)";
,这让我:
0092616281
我现在想提取报告日期,我用这个正则表达式(后很多其他尝试):
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})";
但同样没有找到结果... 你看到我失去了一些东西在这最后的正则表达式?
非常感谢!
UPDATE:
我用这个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;
}
的您发布的图片和您的问题没有任何意义... – 2011-04-08 07:25:23
在方括号内使用取反的短手时要小心。 '[\\ W \\ D]'是**不是** [^ \\ w \\ d]'。后者将匹配任何不是字母数字或数字的字符。所以它会匹配'*'或'(',但不是'x'或'8'。但前者会匹配任何不是字母数字或不是数字的字符,因为一个字母不是一个数字数字,'[\\ W \\ D]'**将匹配任何字母,尽管使用了'\\ W'. – mousio 2011-04-08 08:06:13