Regex Groovy正则表达式过滤掉模式,除非它是';内部引用

Regex Groovy正则表达式过滤掉模式,除非它是';内部引用,regex,groovy,Regex,Groovy,对于输入字符串,如: 10,14,"1011 testing 1",10,"1022 testing 2",10,"1033, 234, testing 3" 当这些双引号字符是字符串的一部分时,我需要设置一个模式来识别它们后面的数字和逗号,但不能识别它们在引号内的情况 我在groovy代码中使用它,所以我正在执行一个replaceAll调用,其中regex max表示我将用一个空字符串(“”)替换它 该输入字符串需要变成: &quo

对于输入字符串,如:

10,14,"1011 testing 1",10,"1022 testing 2",10,"1033, 234, testing 3"
当这些双引号字符是字符串的一部分时,我需要设置一个模式来识别它们后面的数字和逗号,但不能识别它们在引号内的情况

我在groovy代码中使用它,所以我正在执行一个replaceAll调用,其中regex max表示我将用一个空字符串(“”)替换它

该输入字符串需要变成:

"1011 testing 1","1022 testing 2","1033, 234, testing 3"
这:

使我能够识别后跟逗号的数字。但我该如何说最后一部分关于不在双引号内时的内容呢?有没有办法说只要比赛前有偶数个双引号


我看到了一些类似的帖子,但它们并不完全相同。

如果你要解析CSV,你应该使用一个CSV解析器,为你做所有的艰苦工作

在这种情况下,这是一个独立的字符串,您只想得到一个在双引号之间用逗号分隔的子字符串,您可以使用它

String result = text.findAll(/"[^"]*"/).join(",")

请参阅。

似乎您只想提取双引号之间的所有字符串,为什么不使用
s.findAll(/“[^”]**”/).join(“,”
?我会使用现成的CSV解析器。它们是为处理所有这些废话而构建的。
String result = text.findAll(/"[^"]*"/).join(",")