我看到了一个很好的示例,但我无法根据我的问题调整它。
我想从 CSV 行中仅删除封闭字段,例如: "
" kkl ";"aa bb D";;12 "AA";;"SSS"-;" gg 12";" vv";"sdqs ";
预期结果 :
kkl ;aa bb D;;12 "AA";;"SSS"-; gg 12; vv;sdqs ;
我使用 Pattern 和 Matcher 工具
\"
此解决方案假定带引号的字符串中没有转义引号
.replaceAll("(?<=^|;)\"([^\"]*?)\"(?=;|$)", "$1")
我假设您还想"
在这些情况下剥离"sdfkjhksdf"
:;;;"dffff"
"
另一种解决方案使用所有格量词,其效果依赖于没有出现在引用部分内的假设。
.replaceAll("(?<=^|;)(?:\"(.*?)\"){1}+(?=;|$)", "$1")
对@nhahtdh 的正则表达式进行小修改,以防止它在 CSV 边界之外贪婪地匹配:
.replaceAll("(?<=^|;)\"([^;]*)\"(?=;|$)", "$1");