如何匹配任意数量的大写字母?

时间:2012-09-16 05:20:52

标签: java regex

public static void main(String[] args) {
    Pattern p = Pattern.compile("[A-Z]*");
    Matcher matcher = p.matcher("CSE");
    System.out.println(matcher.group());
}

为什么obove代码会引发java.lang.IllegalStateException?我如何匹配任意数量的大写字母?

2 个答案:

答案 0 :(得分:3)

您需要致电Matcher.find()以启动正则表达式匹配过程。

public static void main(String[] args)
{
    Pattern p = Pattern.compile("[A-Z]*");
    Matcher matcher = p.matcher("CSE");
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}

答案 1 :(得分:1)

在致电matcher.matches();

之前,您必须致电matcher.group());

matcher.group()为您提供上一场比赛确定的子字符串。

你的模式应该是[A-Z]+。这将打印大写字母序列的所有匹配

public static void main(String[] args) {
    Pattern p = Pattern.compile("[A-Z]+");
    Matcher matcher = p.matcher("CSEsdsdWWERdfsdfSSEEfdD");

    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}