我有以下格式的文字:
ERR_OUT_OF_MEM,"ERR OUT OF MEM" ERR_SOMETHING_BAD,"ERR SOMETHING BAD"
我想用下划线替换文本中带引号的所有空格:
ERR_OUT_OF_MEM,"ERR_OUT_OF_MEM" ERR_SOMETHING_BAD,"ERR_SOMETHING_BAD"
我能想出的最好的正则表达式是:
\("\w\+\)\@<=
(那里有一个空间)
但这只能找到每个引用字符串中的第一个空格,我需要多次重复这个空格才能获得所需的效果.
有什么方法可以一次性完成吗?
谢谢!
肯定有一个0长度模式可以一次通过,但由于我从未使用它们取得太大成功,我更喜欢这种方法:
:%s/\%("[^"]*"\)*\("[^"]*"\)/\=substitute(submatch(1),' ','_','g')/g
注意:双引号保持2对2分组,以便不进行转换
foo bar "foo bar" "foo barr"
成
foo bar "foo_bar"_"foo_barr"
编辑:正如猖獗指出的那样,以下绰绰有余:
%s/"[^"]*"/\=substitute(submatch(0),'g')/g
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。