2012-09-16 56 views
1
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?我怎樣才能匹配任何數量的大寫字母?如何匹配任意數量的大寫字母?

+1

是否必須至少有一個大寫。如果是這樣,你需要'+'而不是'*' – justintime

回答

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

你必須調用matcher.group());

matcher.group()給你由以前匹配所確定的子之前調用matcher.matches();

你的方式應該是[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()); 
    } 
} 
相關問題