我有一个逗号分隔的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:
???
非常感谢任何帮助。谢谢!
答案 0 :(得分:0)
理想情况下,我只选择那些含有违规报价的行。
^.*(?:,|^)"[^,"\n]*"[^,\n"]*".*$
要用空字符串替换不匹配的引号,请使用以下正则表达式。
([^,\n])"([^,\n])
然后将匹配的字符替换为\1\2
答案 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