首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Groovy正则表达式过滤掉模式,除非它在引号内

Groovy正则表达式过滤掉模式,除非它在引号内
EN

Stack Overflow用户
提问于 2021-04-06 05:35:29
回答 1查看 47关注 0票数 0

对于像这样的输入字符串:

代码语言:javascript
运行
复制
10,14,"1011 testing 1",10,"1022 testing 2",10,"1033, 234, testing 3"

当那些双引号字符是字符串的一部分时,我需要设置一个模式来识别它们后面的数字和逗号,但不能识别引号内的数字和逗号。

我在groovy代码中使用它,所以我做了一个replaceAll调用,其中regex max意味着我将用一个空字符串("")替换它。

该输入字符串需要变成:

代码语言:javascript
运行
复制
"1011 testing 1","1022 testing 2","1033, 234, testing 3"

这一点:

代码语言:javascript
运行
复制
[0-9]+,

使我能够识别后面跟着逗号的数字。但是我怎么说最后那部分不是在双引号内呢?有没有办法说,只要比赛前有偶数个双引号?

我看到其他一些类似的帖子,但它们并不完全一样。

EN

回答 1

Stack Overflow用户

发布于 2021-04-07 04:32:48

如果您正在解析CSV,那么您应该使用CSV解析器来为您完成所有繁重的工作。

如果这是一个独立的字符串,并且您只想获取双引号之间带有逗号分隔子字符串的字符串,则可以使用

代码语言:javascript
运行
复制
String result = text.findAll(/"[^"]*"/).join(",")

请参阅Groovy demo online

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66960076

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档