正则表达式:如何包含“如果”条件的字符
问题描述:
我正在java中使用正则表达式提取日期提取器。问题是这个日期是20-05-2014,我的程序正在提取0-5-14。总之,我怎么能得到我在检查日期的第二个字符的角色?正则表达式:如何包含“如果”条件的字符
int count = 0;
String data = "HellowRoldsThisis20-05-2014. [email protected]@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]);
}
答
您可以尝试正则表达式:
// (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})"
答
单一的正则表达式匹配Ø有效日期是awful。
我会怎么做:
String regexOfDate = "(?<!\\d)\\d{2}[-_.]\\d{2}[-_.]\\d{4}(?!\\d)";
提取潜在的日期,然后测试,如果它是有效的。
如何绘制正则表达式? – Kyslik 2014-12-13 18:58:21