我试图从记事本++中的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组.
更详细:在第一个括号中,我们匹配开头的双引号,然后匹配任何不是逗号的字符.那是意思[^,]+.在第二个括号中,我们匹配任何不是双引号的字符[^"]+,然后是结束双引号.
小智 7
请尝试以下方法
import re
print re.sub(',(?=[^"]*"[^"]*(?:"[^"]*"[^"]*)*$)',"",string)
Run Code Online (Sandbox Code Playgroud)
这将删除引号之间的逗号
只是@zx81 出色解决方案的更新。假设引号之间有 2 个逗号
然后正则表达式搜索必须修改如下:
("[^",]+),([^",]+),([^"]+")
Run Code Online (Sandbox Code Playgroud)
替换需要修改为
$1$2$3
Run Code Online (Sandbox Code Playgroud)
因此根据逗号# 进行修改。
我尝试探索递归正则表达式是否可能,但目前似乎不可能