我有一个String,如下所示:
String s = "A, Category, \"Agriculture, forestry and fishing\",";
我想删除逗号周围的空格(在引号外)。所以我的字符串应该是这样的:
A,Category,"Agriculture, forestry and fishing",
我试过跟随RE:
String s = s.replaceAll("[,]\\s+", ",");
但输出是:
A,Category,"Agriculture,forestry and fishing",
我应该在正则表达式中进行哪些更改,以避免更改引号内的逗号?
答案 0 :(得分:2)
您可以使用:
String str = "A, Category, \"Agriculture, forestry and fishing\",";
String result = str.replaceAll(" (?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", "");
//------------------------------^--------------------------------------
System.out.println(result);
这将打印:
A,Category,"Agriculture, forestry and fishing",
//----------------------^---------------------
引号内的空格不会改变,只是在引号之外。
以下是code DEMO,此处为regex DEMO
修改强>
这部分来自 @Exception_al 所以他建议使用这个:
String result = str.replaceAll("(\\s*,\\s*)(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)", ",");
如果您想要替换逗号,
和单词之间的所有空格,此解决方案非常好。
您可以在regex DEMO
中查看这种方法的效果