正则表达式:如何替换模式的一部分并引用其中的变量?

Wol*_*'08 9 regex vi replace

我想匹配一个模式,替换模式的一部分,并使用模式中的变量作为替换字符串的一部分.

它是否正确?

/s/^((\s+)private\sfunction\s__construct\(\))/(2)def\s__init__

英文:用"private function __construct()"相同数量的空格和字符串替换任意数量的空格,后跟字符串def __init__.那么,我的正则表达式是坏还是什么?

部分替换

Pra*_*ate 13

我认为你想要替换它 vi

替换所有出现的事件

:s/^\(\s\+\)private function __construct()/\1def __init__/g
Run Code Online (Sandbox Code Playgroud)

先替换

:s/^\(\s\+\)private function __construct()/\1def __init__/
Run Code Online (Sandbox Code Playgroud)

你的模式很少有建议

  • /用在vi搜索,使用:
  • 你需要逃避( )vi
  • 使用\i我在哪里xth捕获组喜欢\1 \2支持替换参考分组模式
  • \s不能替换文本使用时可以' '代替
  • /g如果要替换所有实例,请使用尾随

http://vimregex.com应该可以帮助您入门.


mat*_*fee 6

这称为反向引用,您可以使用\i从模式中引用第i个捕获的组.

所以对于模式^((\s+)private\sfunction\s__construct\(\)),替换是\2def __init__.