Notepad ++正则表达式替换CSV中的引用列之间的引号

时间:2015-01-12 05:24:11

标签: regex csv notepad++

我有一个逗号分隔的CSV文件,其中包含3个引用列,如下所示:

  

“这个”,“很好”,“数据”

某些行在第二列中有额外的引号:

  

“this”,“is”bad“,”data“

     

“this”,“is”真的“糟糕”,“数据”

此站点(http://editplus.info/wiki/Search_and_Replace_Tricks#Delete_everything_inside_a_tag_pair_.28keeping_tags.29)有一个RegEx字符串来选择标记之间的文本(在本例中为“,”),但我只想替换标记之间的任何引号字符,而不是整个字符串。理想情况下,我只会选择那些具有违规报价的行。

选择整个第二列的RegEx:

  

( “ ”)。+(“,”)

仅使用它们选择坏引号或行的RegEx:

  

???

非常感谢任何帮助。谢谢!

4 个答案:

答案 0 :(得分:0)

  

理想情况下,我只选择那些含有违规报价的行。

^.*(?:,|^)"[^,"\n]*"[^,\n"]*".*$

DEMO

要用空字符串替换不匹配的引号,请使用以下正则表达式。

([^,\n])"([^,\n])

然后将匹配的字符替换为\1\2

DEMO

答案 1 :(得分:0)

使用以下内容运行匹配:/([\w ])"(?![,\n])/g

代以:$1'

用单引号替换所有有问题的双引号,产生:

"this","is 'bad","data"
"this","is 'really' bad","data"

在这里演示:https://regex101.com/r/dL7jZ6/12(感谢Avinash Raj寻找演示网站)

答案 2 :(得分:0)

假设格式总是如何发布,我会做类似的事情:

[]“。*?”

答案 3 :(得分:0)

试试这个:在所有情况下,它都会在notepad ++ 中进行测试:

([^,\n\r\t])"+([^,\n\r\t])搜索并替换为$1$2(来自@ Avinash Raj的想法

<强> Demo

下一个要求的更新,包括评论

(^"|","|"$)|"搜索并替换为$1

Update demo