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

正则表达式分组
我想把字符串s="''','','1','682575','1H 24\'','True','1','0','0','1','0','0','1637954'";
中单引号内的内容取出来(包括空值),但是其中的1H 24\'总是取不出。
请大家帮助看看以下代码,哪里错?
s="''','','1','682575','1H 24\'','True','1','0','0','1','0','0','1637954'";
Pattern p = Pattern.compile("(?:')([^(',)]*)(?:',)");
Matcher m = p.matcher(s);
int i=0;
int end=0;
while (m.find()) {
System.out.println("第"+i+"个:"+m.group(1));
end=m.end();//取得最后匹配的索引
i++;
}
//提取最后一个
int b=end;
int e=s.indexOf("'", b+1);
System.out.println("最后一个是:"+s.substring(b+1,e));

------解决方案--------------------
请参考
Java code
    String s="''','','1','682575','1H 24\'','True','1','0','0','1','0','0','1637954'"; 
    Pattern p = Pattern.compile("'([^,']*?)'"); 
    Matcher m = p.matcher(s); 
    while(m.find()) {
      System.out.println(m.group(1));
    }