日期:2014-05-20  浏览次数:20583 次

JAVA 正责表达式问题???
public void query(){
boolean t = false;
String str2 = jTextField.getText();
String str1 = jTextArea1.getText();
Pattern p = Pattern.compile(str2,Pattern.CASE_INSENSITIVE);  
Matcher m = p.matcher(str1);
t = m.find();
jTextField1.setText(Boolean.toString(t)); /// 这里返回TRUE

if(t){
for(i=0;i<m.groupCount();i++){  
jTextArea.setText(m.group(i) + "\n"); //这里为什么不能输出呢

} //把m.groupCount();改为20,或其他数,就可以输出了,这怎么回事呢??
}
}

------解决方案--------------------
而用m.groupCount()计算的结果是不包括group(0),也就是说,如果表达式没有括号,m.groupCount结果是0
这就是加个括号的用处