我有文本在某些行包含正確的字符串轉義雙引號,有些不是 象下面這樣:取代方式逃避VIM引號
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
前一個反斜槓但是我想我有一個小小的失落。
注:
有每行 只有一個這樣的字符串,長度爲雙引號括起來,並且可以包含內部雙引號 - 只是這裏面的人都不應逃脫
嗨這個答案比Jeff的更好我修改了輸入輸出數據以表明它可以工作,即使在一個字符串中有多個引號我也會接受它只有一個小例子它不起作用因爲我會把它想 例如: 喇嘛\ bla5 「AAA」 BBB 「」 BBB 「CCC」 bla5 成爲 喇嘛\ bla5 「AAA \」 BBB \ 「」 BBB \ 「CCC」 bla5 的情況是,如果有兩個雙引號「」 也許你知道如何使它適用於這種情況 – szydan
對不起,我也按下輸入早現在評論應該沒問題 – szydan
@szydan我改變了第二個替代命令中的正則表達式,以便使用負面看起來後面。當兩個引號相鄰時,這是有效的。 – FDinoff