public static void main(String[] args) {
Matcher m = Pattern.compile("(\"[^\"]*(\"{2})*[^\"]*\")*[^,]*,").matcher("洲际酒店(杭州),\"1,388\",538,100,含双早,杭州益乐路39号,\"\"\"Yile Road 39, Hangzhou, Zhejiang Province\"\"\",");
String str = "";
while (m.find()){
str = m.group();
str = str.replaceAll("(?sm)\"?([^\"]*(\"{2})*[^\"]*)\"?.*,", "$1");
str = str.replaceAll("(?sm)(\"(\"))", "$2");
System.out.print(str +" ");
}
}
程序输出结果:
     洲际酒店(杭州) 1,388 538 100 含双早 杭州益乐路39号 "Yile Road 39, Hangzhou, Zhejiang Province想要的结果:
   洲际酒店(杭州) 1,388 538 100 含双早 杭州益乐路39号 "Yile Road 39, Hangzhou, Zhejiang Province"就是后面再多加个“"”号,
请问,该如何修改正则  ???????   先谢谢咯

解决方案 »

  1.   

    补充:想要的结果: 
          洲际酒店(杭州)   1,388   538   100   含双早   杭州益乐路39号   Yile   Road   39,   Hangzhou,   Zhejiang   Province 
      

  2.   

    public   static   void   main(String[]   args)   { 
    Matcher   m   =   Pattern.compile( "(\ "[^\ "]*(\ "{2})*[^\ "]*\ ")*[^,]*, ").matcher( "洲际酒店(杭州),\ "1,388\ ",538,100,含双早,杭州益乐路39号,\ "\ "\ "Yile   Road   39,   Hangzhou,   Zhejiang   Province\ "\ "\ ", "); 
    String   str   =   " "; 
    while   (m.find()){ 
    str   =   m.group(); 
    str   =   str.replaceAll( "(?sm)\ "?([^\ "]*(\ "{2})*[^\ "]*)\ "?.*, ",   "$1 "); 
    str   =   str.replaceAll( "(?sm)(\ "(\ ")) ",   "$2 "); 
    System.out.print(str   + "   "); 


    要得到如下输出结果: 
              洲际酒店(杭州)   1,388   538   100   含双早   杭州益乐路39号   Yile   Road   39,   Hangzhou,   Zhejiang   Province 该怎么样修改正则  ( ⊙ o ⊙ )!
      

  3.   

    我做了一些简化,可以正确处理。
    如下:
    String S2 = "洲际酒店(杭州), \"1,388\", 538, 100, 含双早, 杭州益乐路39号, \"\"\"Yile   Road   39,   Hangzhou,   Zhejiang   Province\"\"\", ";Pattern p = Pattern.compile( "((\"{3}[^\"]+\"{3})|(\"?[^\"]+?\"?)), ");
    Matcher   m   =   p.matcher(S2);
    String   str   =   " ";
    int index = 0;
    while   (m.find()){
    index++;
    System.out.println("INDEX: " + index);

    String str1   =   m.group();
    System.out.println("group: [" + str1 + "]");

    String str2   =   str1.replaceAll( "(\"{3}([^\"]+)\"{3}), ",   "$2 ");
    System.out.println("replace 1: [" + str2 + "]");

    if (str1.equals(str2)) {
    String str3   =   str1.replaceAll( "(\"?([^\"]+)\"?), ",   "$2 ");
    System.out.println("replace 2: [" + str3 + "]");
    }