繁体   English   中英

Java:在Pattern.compile中使用花括号

[英]Java : use of Curly braces inside Pattern.compile

我正在研究一个现有代码,其中有这段代码,如果它属于昨天,则负责删除符号。

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}");

提前致谢

查看http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

  • \\\\d是字符类“十进制”-因此从0到9的任何数字。
  • {2}指定“先前的表达式必须正好出现2次”

所以:

  • \\\\d{2}匹配任何2位数字
  • \\\\d{4}匹配任何4位数字

它与某个月份匹配,后跟2位数字然后是4位数字: Jan 14 2012

\\\\d表示十进制数字(用外行术语来说是0-9),花括号中的数字是预期的确切出现次数。

在您的情况下,{2}匹配月份的两位数字,{4}匹配年份的四位数字。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM