2

我正在寻找一个 java 正则表达式,它将在 excel 单元格中转义双引号。

我已经按照这个示例进行操作,但需要对正则表达式进行另一项更改,以使其能够在其中一个单元格中转义双引号。

在 Java 中使用 RegEx 解析 CSV 输入

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

示例数据:

"A,B" , "2" 大小" , "text1,text2, text3"

上面的正则表达式在2".

我希望输出如下所示。外部双引号是否存在无关紧要。

"A,B"
"2" 大小"
"text1,text2, text3"

4

2 回答 2

0

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

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

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

于 2012-11-29T23:26:16.533 回答
0

正如 FJ 评论的那样,输入数据是模棱两可的。但是对于您的示例输入,您可以尝试

  • string.split("\",\"")获取方法String[]。在此之后,你得到一个包含 3 个元素的数组:
[
"A,B, 
2" size, 
text1,text2, text3"
]
  • 删除数组第一个元素的第一个字符(双引号)
  • 删除数组最后一个元素的最后一个字符(双引号)
于 2012-11-29T23:27:22.093 回答