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

求助,一个简单正则表达式的写法
我有一个字符串:A,B,"a,b,c",C
现在需要吧双引号中间的逗号去掉。但是又不确定双引号中间部分有几个逗号,因为这部分是金额。
我需要把这个串分割,双引号之间的逗号会影响分割。
高手给指点下谢谢。

------解决方案--------------------
Java code
    public static void main(String[] args) {
        
        

        String s = "A,B, \"0, b, c\",C , \"4, 5, 6, 7,7, 9\"";
        
        
        String[] ss = s.split("\"[0-9A-Za-z,\\s]*\"");
        int offset = 0;
        int from = 0, to = 0;
        StringBuffer sb = new StringBuffer();
        int i = 0;
        for (; i < ss.length; ++i) {

            offset = s.indexOf(ss[i]);
            from = offset + ss[i].length();
            if (i == ss.length - 1) {
                to = s.length();
            } else {
                to = s.indexOf(ss[i + 1], offset);
            }
            
            String m = s.substring(from, to);
            m = m.replaceAll(",", "");
            m = m.replaceAll(" ", "");
            sb.append(s.substring(offset, from));
            sb.append(m);
            
        }

        
        System.out.println(sb.toString());
        
        

        

    }

------解决方案--------------------
呵呵

Java code
分隔用:",(?![^\"]*\"\\s*(?:,|$))"
替换用:",(?=[^\"]*\"\\s*(?:,|$))"

------解决方案--------------------
[Quote=引用:]
Java code
 
public static void main(String[] args) throws IOException { 
String str="A,B,\"aaaaaaaaa,bbb,ccccc\",C"; 
System.out.println(str); 
String[] str3 = str.split("(? <!(,\"\\w{0,10})),(?!(\\w{0,10}\",))"); 
for(int i=0;i <str3.length;i++){ 
System.out.println(str3[i]); 
} 
}