所以我正在寻找一种方法来取这样的东西
Two words
Three Words Here
并将其替换为
Twowords = myHash["Two words"];
ThreeWordsHere = myHash["Three Words Here"];
我发现了这个问题,这导致了我的子替换命令,我得到了类似的东西。
%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g')/
现在这将得到没有空格的匹配,但在等号后面没有任何内容。在替换表达式后添加文本会导致“E51:无效表达式”错误。
我的问题是:有没有办法结束表达式,并在:s命令中添加更多文本?这样的事情。
%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g') = myHash["\1"];/
我找不到任何东西。我看过:帮助子替换 - \ =和其他来源在线。谢谢!
答案 0 :(得分:3)
你几乎拥有它。
\=
原子之后的所有内容都必须是表达式,因此您需要将字符串连接在一起并再次使用submatch()
。使用您已经提供的正则表达式:
:%s/\(\([A-z ]\)\+\)/\=substitute(submatch(1), ' ', '', 'g') . ' = myHash["' . submatch(1) . '"];'/