String str="arg like '%A01%' or arg like '%B02%' or arg like '%C03%'";
String regex="arg like  \\u0027\\u0025(.+?)\\u0025\\u0027";
Pattern pattern = Pattern.compile(regex);   
Matcher matcher = pattern.matcher(str);
if(matcher.find()){
for(int i=0;i<=matcher.groupCount();i++){
System.out.println(matcher.group(i)); 
}
    
}得到的结果是:
arg like  '%A01%'
A01但是我想得到A01、B02、C03
请问该如何修改呢??

解决方案 »

  1.   


    String str="arg like '%A01%' or arg like '%B02%' or arg like '%C03%'";
     String regex="%(.+?)%";
         Pattern pattern = Pattern.compile(regex);   
         Matcher matcher = pattern.matcher(str);
             while(matcher.find()){
              System.out.println(matcher.group(1));
             }
      

  2.   

    查了下api,原来matcher.find()只会匹配最近的一个符合正则表达式的字符串便返回了,
    修改如下:String str="arg like '%A01%' or arg like '%B02%' or arg like '%C03%'";
            String regex="arg like  \\u0027\\u0025(.+?)\\u0025\\u0027";
            Pattern pattern = Pattern.compile(regex);   
            Matcher matcher = pattern.matcher(str);
            while(matcher.find()){
                    System.out.println(matcher.group(1));                 
            }