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;
}
}
}
}
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;
}
}
}
}
set.add("siteid6_2");
set.add("siteid1_1");
这里有三个参数,我的目的是想用"siteid6_"去匹配"siteid6_1"和"siteid6_2",应该有两个结果,但是程序运行的结果是空!
请问是哪里出了问题?
boolean result=m.find();
if(result){
System.out.println(str);
}else{
break; 改成 while(m.find()){
System.out.println(str);
}
源代码逻辑有问题。匹配不到就跳出了
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