微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用于替换引号内空格的vim正则表达式

我有以下格式的文字
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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐