繁体   English   中英

在Java中使用RegEx解析CSV-单元格内的转义双引号

[英]Parsing CSV with a RegEx in java - escape double quote within cell

我正在寻找一个Java regex,它将在Excel单元格中转义双引号。

我已经遵循了这个示例,但是需要对正则表达式进行另一处更改,以使其能够在一个单元格中转义双引号。

在Java中使用RegEx解析CSV输入

private final Pattern pattern = Pattern.compile("\"([^\"]*)\"|(?<=,|^)([^,]*)(?=,|$)");

示例数据:

“ A,B” “ 2”大小“ ” text1,text2,text3“

上面的正则表达式在2"处失败。

我希望输出如下。无论外部双引号是否存在,都没关系。

“ A,B”
“ 2”尺寸”
“ text1,text2,text3”

我同意,使用正则表达式解析CVS并不是真正的最佳方法,但更好的模式是:

Pattern pattern = Pattern.compile("^\"([^\"]*)\",|,\"([^\"]*)\",|,\"([^\"]*)\"$|(?<=,|^)([^,]*)(?=,|$)");

这将仅在引号和逗号之后终止单元格值,或在命令和引号之后启动它。

就像FJ评论的那样,输入数据不明确。 但是对于示例输入,您可以尝试

  • string.split("\\",\\"")方法获取String[] 之后,您将获得一个包含3个元素的数组:
 [ "A,B, 2" size, text1,text2, text3" ] 
  • 删除数组第一个元素的第一个字符(双引号)
  • 删除数组最后一个元素的最后一个字符(双引号)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM