正则表达式,用于在CSV文件中查找和替换未转义的非连续双引号

ste*_*myu 3 regex csv expression programming-languages

这是对此处回答的相关问题的扩展

我有一个需要解析的每周csv文件.它看起来像这样.

"asdf","asdf","asdf","asdf"

但有时会有一些文本字段包含一个额外的未转义的双引号字符串

"asdf","as "something" df","asdf","asdf"

从这里的其他帖子,我能够整理一个正则表达式

(?m)""(?![ \t]*(,|$))
Run Code Online (Sandbox Code Playgroud)

它匹配两个连续的双引号,只有"如果它们之前没有逗号或行尾,可选中间有空格和制表符"

现在这只能连续找到双引号.如何修改它以查找和替换/删除文件中"something"周围的双引号?

谢谢.

Tim*_*ker 6

(?<!^|,)"(?!,|$)
Run Code Online (Sandbox Code Playgroud)

将匹配一个双引号,该引号不在逗号之前或之后,也不在逗号的开头/结尾.

如果你需要允许逗号周围或开始/结束时的空格,并且你的正则表达式(你没有指定)允许任意长度的lookbehind(例如.NET),你可以使用

(?<!^\s*|,\s*)"(?!\s*,|\s*$)
Run Code Online (Sandbox Code Playgroud)