如何用Notepad++正则修复CSV意外双引号(排除行首尾)
修复CSV意外双引号:Notepad++正则适配方案
需求说明
用Notepad++ 7.8.8处理带引号的CSV文件,要找出并替换里面的意外双引号——要求匹配的双引号前后不能是逗号,同时得排除每行开头和结尾的合法包裹引号。之前写的正则/(?<!^)(?<!,)"(?!,)(?!$)/gm在Regexr开多行模式时能用,但Notepad++不支持/m标志,得找替代办法。
两种解决办法
1. 在Notepad++里开启多行匹配
Notepad++用的PCRE正则引擎支持多行模式,只是不用/m标志:
- 打开替换窗口(Ctrl+H),切换到「正则表达式」模式
- 勾选下方的「匹配换行」选项,或者直接在正则开头加
(?m)内联修饰符,写成(?m)(?<!^)(?<!,)"(?!,)(?!$)即可实现原正则的效果
2. 改写正则,不依赖多行模式
如果不想依赖多行模式,可把行首/行尾的判断换成更明确的文本边界匹配,使用以下正则:
(?<!\A|,)"(?!,|\z)
注意:这个正则是匹配整个文本的首尾,若处理多行CSV,还是推荐第一种方法,确保只排除每行的首尾引号。
测试验证
拿典型CSV行测试:
"合法字段","字段"里有"意外引号","另一个合法字段"
"行首合法","中间"错误"引号","行尾合法"
两种方法都能精准定位那些不在逗号旁、也不在行首尾的意外双引号,不会误删合法的字段包裹引号。
内容的提问来源于stack exchange,提问作者Xinneh
相关产品推荐
相关产品推荐

