帮助vim搜索/替换复杂的正则表达式

Oli*_*ons 1 regex vim

这是我想用正则表达式做的事情:2个步骤:

(1)转换所选区域中的所有变量,如下所示:

$Sejour_deb_mois
$Info_pays
Run Code Online (Sandbox Code Playgroud)

至 :

$SejourDebMois
$InfoPays
Run Code Online (Sandbox Code Playgroud)

(2)转换所选区域中的所有变量,如下所示:

$this->Sejour_deb_mois
$this->Info_pays
Run Code Online (Sandbox Code Playgroud)

至 :

$this->SejourDebMois
$this->InfoPays
Run Code Online (Sandbox Code Playgroud)

而且我很确定这可以使用正则表达式完成...但我无法弄清楚那两个做得好的人......

任何帮助将不胜感激!

谢谢

奥利维尔庞斯

Cur*_*son 6

对于上面的两个例子,这应该做的工作:

s/\(_\)\(.\)/\u\2/g
Run Code Online (Sandbox Code Playgroud)

基本上,它找到每个下划线和下面的字符,将它们与parens分组.然后,它丢弃一个字符的下划线和大写字母.

如果您在视觉上选择了区域并按下:,整个表达式将如下所示:

:'<,'>s/\(_\)\(.\)/\u\2/g
Run Code Online (Sandbox Code Playgroud)