我想做这个:
%s/shop_(*)/shop_\1 wp_\1/
Run Code Online (Sandbox Code Playgroud)
为什么不shop_(*)匹配?
Dae*_*yth 71
这里有几个问题.
vim regexen中的parens不用于捕获 - 你需要\( \)用于捕获.
*并不代表你的想法.它的意思是"前面的0或更多",所以你的正则表达式意味着"一个字符串,shop_后面跟着0+ (,然后是一个文字).
你正在寻找.,正则表达式是"任何字符".放在一起作为一个明星.*它表示"0或更多任何字符".您可能至少需要一个字符,因此请使用.\+(+表示"之前的1个或更多")
用这个:%s/shop_\(.\+\)/shop_\1 wp_\1/.
可选,结束于g后最后的斜线,以取代所有实例在同一行,而不仅仅是第一.
Ste*_*hen 20
如果我理解正确,你想要 %s/shop_\(.*\)/shop_\1 wp_\1/
转义捕获括号并使用.*匹配任意数量的任何字符.
(您的搜索正在搜索"shop_",后跟任意数量的左括号,后跟右括号)
| 归档时间: |
|
| 查看次数: |
40582 次 |
| 最近记录: |