import java.util.HashSet;
import java.util.Set;
import java.util.regex.*;class Regex1{
public static void main(String args[]) {
Set set =new HashSet();
set.add("siteid6_1");
set.add("siteid6_2");
set.add("siteid1_1");
Object[] temp = set.toArray();
String regEx="siteid6_";
Pattern p=Pattern.compile(regEx,Pattern.CASE_INSENSITIVE);
for(int i=0;i<set.size();i++){
String str=temp[i].toString();
Matcher m=p.matcher(str);
boolean result=m.find();
if(result){
System.out.println(str);
}else{
break;
}
}
}
}

解决方案 »

  1.   

    当然了,String regEx="siteid6_"; 怎麽可能匹配到siteid1
      

  2.   

    set.add("siteid6_1"); 
    set.add("siteid6_2"); 
    set.add("siteid1_1"); 
    这里有三个参数,我的目的是想用"siteid6_"去匹配"siteid6_1"和"siteid6_2",应该有两个结果,但是程序运行的结果是空!
    请问是哪里出了问题?
      

  3.   


    boolean result=m.find(); 
    if(result){ 
    System.out.println(str); 
    }else{ 
    break; 改成 while(m.find()){
    System.out.println(str); 
    }
    源代码逻辑有问题。匹配不到就跳出了
      

  4.   

    代码:
    import java.util.HashSet;
    import java.util.Set;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;public class Regex1 { public static void main(String args[]) {
    Set set = new HashSet();
    set.add("siteid6_1");
    set.add("siteid6_2");
    set.add("siteid1_1");
    Object[] temp = set.toArray();
    String regEx = "siteid6_\\d";  //String regEx = "siteid6_";
    Pattern p = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE);
    for (int i = 0; i < set.size(); i++) {
    String str = (String) temp[i];  //temp[i].toString();
    Matcher m = p.matcher(str);
    boolean result = m.matches();  //m.find();
    if (result) {
    System.out.println(str);
    } else {
    //break;
    }
    }
    }}输出:
    siteid6_1
    siteid6_2