【发布时间】:2014-02-07 16:01:18
【问题描述】:
我有一些文本在字符串中包含正确转义的双引号,而有些则没有 如下:
bla1 "aaa"bbb"ccc" bla1
bla2 "aaa\"bbb\"ccc" bla2
替换后的结果应该是
bla1 "aaa\"bbb\"ccc" bla1
bla2 "aaa\"bbb\"ccc" bla2
但不是:
bla1 "aaa\"bbb\"ccc" bla1
bla2 "aaa\\"bbb\\"ccc" bla2
换句话说,它应该在没有转义的行中转义双引号 并且不要触摸已经正确转义的行
到目前为止,我得到了第二个结果
%s:\(\s".\+\)\(".\+\)\(".\+"\s\):\1\\\2\\\3:g
然后我尝试了一个否定的后视来告诉引擎不匹配 如果引号前有反斜杠
(?<!\) which in vim should be something like @<!\
%s:\(\s".\+\)\@<!\\\(".\+\)@<!\\\(".\+"\s\):\1\\\2\\\3:g
但我觉得我有点迷失了。
注意:
每行只有一个这样的字符串
该字符串用双引号括起来,并且可以在里面包含双引号 - 只有这个里面的一个应该被转义
【问题讨论】: