使用:echo substitute("abc","a\|d","e","")
命令,我希望得到像ebc
这样的答案。但答案仍然是abc
。当我使用:s/a\|d/e/
替换文字时,我可以获得ebc
。我想知道原因。
答案 0 :(得分:4)
字符串文字有自己的反斜杠转义符(请参阅:help expr-quote
),因此您需要加倍反斜杠,以便其中一个转到regexp解析器。
答案 1 :(得分:1)
这是一条评论,但格式化长评论很困难(对不起):)
行情问题总是一场噩梦。
为了减少它,您可以使用“单引号”' strings \ cite(@peterRinker等)并且非常神奇
(\v
)修饰符(不需要escapa + |()和更多运算符)。
示例:
:echo substitute("Name Surname",'\v(\w)\w+ (\w+)','\2, \1',"")
- 姓氏,N