我正在处理现有代码,我有这段代码,如果它属于昨天,则负责删除符号。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.apache.log4j.Logger;
public class Test {
public static void main(String args[]) {
try {
String currentSymbol = "TEST JUL 20 2013";
Pattern datePattern = Pattern
.compile("(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) \\d{2} \\d{4}");
Matcher dateMatcher = datePattern.matcher(currentSymbol);
if (dateMatcher.find()) {
System.out.println("Inside dateMatcher.find");
} else {
System.out.println("Not Inside dateMatcher.find");
}
} catch (Exception t) {
t.printStackTrace();
}
}
}
此代码工作正常,但有人可以告诉我此行\\d{2} \\d{4}
需要什么,这是什么意思
Pattern datePattern = Pattern
.compile("(JAN|FEB|MAR|APR|MAY|JUN|JUL|AUG|SEP|OCT|NOV|DEC) \\d{2} \\d{4}");
提前致谢
答案 0 :(得分:12)
查看http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html
\\d
是字符类“Decimal” - 所以从0到9的任何数字。{2}
指定“前一个表达式必须恰好出现2次”这样:
\\d{2}
匹配任何2位数字\\d{4}
匹配任何4位数字答案 1 :(得分:3)
匹配某个月,然后是2位数字,然后是4位数字:Jan 14 2012
答案 2 :(得分:1)
\\d
指的是十进制数字(外行人的术语中为0-9),花括号中的数字是预期的确切出现次数。
在您的情况下,{2}匹配月份的两位数,{4}匹配一年中的四位数。