0

我看到了一个很好的示例,但我无法根据我的问题调整它。

我想从 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 工具

4

2 回答 2

5

\"此解决方案假定带引号的字符串中没有转义引号

.replaceAll("(?<=^|;)\"([^\"]*?)\"(?=;|$)", "$1")

我假设您还想"在这些情况下剥离"sdfkjhksdf";;;"dffff"

"另一种解决方案使用所有格量词,其效果依赖于没有出现在引用部分内的假设。

.replaceAll("(?<=^|;)(?:\"(.*?)\"){1}+(?=;|$)", "$1")
于 2012-06-26T09:36:00.987 回答
2

对@nhahtdh 的正则表达式进行小修改,以防止它在 CSV 边界之外贪婪地匹配:

.replaceAll("(?<=^|;)\"([^;]*)\"(?=;|$)", "$1");
于 2012-06-26T09:50:31.297 回答