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

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

4

2 回答 2

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());
    }
}
于 2012-09-16T05:23:32.607 回答
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());
    }
}
于 2012-09-16T05:26:27.473 回答