使用正则表达式删除引号

时间:2012-06-26 09:30:54

标签: java regex

我看到good sample,但我不能适应我的问题。

我想从CSV行删除仅封闭字段 ",如下所示:

" kkl ";"aa bb D";;12 "AA";;"SSS"-;" gg 12";" vv";"sdqs ";

预期结果:

 kkl ;aa bb D;;12 "AA";;"SSS"-; gg 12; vv;sdqs ;

我使用模式和匹配工具

2 个答案:

答案 0 :(得分:5)

此解决方案假定引用的字符串

中没有转义引用\"
.replaceAll("(?<=^|;)\"([^\"]*?)\"(?=;|$)", "$1")

我认为您还希望在这种情况下剥离""sdfkjhksdf";;;"dffff"

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

.replaceAll("(?<=^|;)(?:\"(.*?)\"){1}+(?=;|$)", "$1")

答案 1 :(得分:2)

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

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