正则表达式删除双引号notepad ++之间的逗号

mrk*_*rki 9 regex notepad++

我试图从记事本++中的csv文件中删除双引号内的逗号,这就是我所拥有的:

1070,17,2,GN3-670,"COLLAR B, M STAY","2,606.45"
Run Code Online (Sandbox Code Playgroud)

我需要这个:

1070,17,2,GN3-670,"COLLAR B M STAY","2606.45"
Run Code Online (Sandbox Code Playgroud)

我想用reg exp来使用记事本查找/替换选项.图案.我尝试了所有类型的组合,但没有设法做到:(该文件包含100万行.

整个今天我不再确定一个简单的正则表达式可以做什么?也许我应该用脚本... python?

zx8*_*x81 26

mrki,这将做你想要的(用N ++测试):

搜索: ("[^",]+),([^"]+")

替换:$1$2\1\2

这是如何运作的?第一个括号将字符串的开头捕获到(但不包括)逗号到组1中.第二个括号在逗号进入组2后捕获字符串的结尾.替换用字符串替换组1和第2组.

更详细:在第一个括号中,我们匹配开头的双引号,然后匹配任何不是逗号的字符.那是意思[^,]+.在第二个括号中,我们匹配任何不是双引号的字符[^"]+,然后是结束双引号.

  • 为了更安全,我会使用`("[^",] +),([^"]*")`因为两个双引号需要注意**之前**和**之后**逗号 (2认同)

小智 7

请尝试以下方法

import re

print re.sub(',(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$)',"",string)
Run Code Online (Sandbox Code Playgroud)

这将删除引号之间的逗号


Ana*_*man 6

只是@zx81 出色解决方案的更新。假设引号之间有 2 个逗号

然后正则表达式搜索必须修改如下:

("[^",]+),([^",]+),([^"]+")
Run Code Online (Sandbox Code Playgroud)

替换需要修改为

$1$2$3
Run Code Online (Sandbox Code Playgroud)

因此根据逗号# 进行修改。

我尝试探索递归正则表达式是否可能,但目前似乎不可能