You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java用单行正则+replaceAll处理CSV多余双层双引号方案求助

Java 适配正则解决方案

核心正则表达式

你可以直接使用下方正则配合replaceAll方法实现需求,默认满足单行匹配要求,不会跨行处理内容:

"[\s\"]*([^\"]*?)[\s\"]*"

在Java字符串中使用时需要对双引号和反斜杠转义,最终转义后的正则写法为:

"\"[\\s\\\"]*([^\\\"]*?)[\\s\\\"]*\""

完整代码示例

public class CsvQuoteFix {
    public static void main(String[] args) {
        String rawCsv = "\"\"demo\"\",\"\"kkkk\"\"\n" +
                "\"\"demo \" \",\"fg\"\n" +
                "\"     \" demo\"  \"\n" +
                "\"demo\"\n" +
                "\"value1\",\"\" frg\"   \",\"vaue5\"\n" +
                "\"val3\",\"\"tttyy \"      \",\"\"hjhj\",\"ghuy\"";
        
        String fixedCsv = rawCsv.replaceAll("\"[\\s\\\"]*([^\\\"]*?)[\\s\\\"]*\"", "\"$1\"");
        System.out.println(fixedCsv);
    }
}

正则逻辑说明

  • 开头的"匹配字段最左侧的双引号
  • [\s\"]*匹配左引号后任意数量的空格、多余双引号
  • ([^\"]*?)为非贪婪捕获组,提取字段的实际内容(不含双引号)
  • [\s\"]*匹配实际内容右侧任意数量的空格、多余双引号
  • 结尾的"匹配字段最右侧的双引号
  • 替换逻辑为用一对双引号直接包裹捕获到的实际字段内容,自动去掉所有多余空格和引号

内容的提问来源于stack exchange,提问作者Pallab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:18:03