正则表达式查找逗号,不包括双引号分隔的字符串内的逗号

正则表达式查找逗号,不包括双引号分隔的字符串内的逗号

我想通过 Excel 插件上的按钮来操作已关闭的 .csv 文件,而无需将其打开。我可以完成所有步骤,但找不到可以实现此目的的正则表达式。(网上各种公告板上有类似问题的多个答案,但没有一个真正有效。

以下是示例代码,解决方案如下:

在此处输入图片描述

我尝试了几种正则表达式,但似乎找不到解决方案。我最接近的尝试是:

在此处输入图片描述

我觉得一定有可能做到这一点。有人能帮我解决我哪里做错了吗?

答案1

你可以分两次完成。首先,替换不带引号的逗号:

/(?!\B"[^"]*),(?![^"]*"\B)/\|/gm

Input                               Output
---------------------------------   ---------------------------------
aaa,bbb,ccc,"ddd,eee","fff,ggg"     aaa|bbb|ccc|"ddd,eee"|"fff,ggg"
"aaa,bbb",ccc,ddd,"eee,fff"         "aaa,bbb"|ccc|ddd|"eee,fff"
"aaa,bbb","ccc,ddd","eee,fff",ggg   "aaa,bbb"|"ccc,ddd"|"eee,fff"|ggg

这是第一步的在线演示

然后只需将“ 替换为空即可获得所需的最终结果:

/"//gm

Input                               Output
---------------------------------   ---------------------------------
aaa|bbb|ccc|"ddd,eee"|"fff,ggg"     aaa|bbb|ccc|ddd,eee|fff,ggg
"aaa,bbb"|ccc|ddd|"eee,fff"         aaa,bbb|ccc|ddd|eee,fff
"aaa,bbb"|"ccc,ddd"|"eee,fff"|ggg   aaa,bbb|ccc,ddd|eee,fff|ggg

这是第二步的在线演示

这是基于Stack Overflow 上的这个答案

相关内容