首页 > 解决方案 > 使用正则表达式从行中剥离函数调用

问题描述

假设我有一条线,

$bagel = parser(1);
$potato = parser(3+(other var));
$avocado = parser(3-(var1+var2+var3));
$untouchedtoast = donotremove(4);

我想打印,而不是 parser(1),只打印 1。所以我想剥离函数调用(我猜是匹配 parser(.)?),但保持内部结构不变。理想情况下,输出将是

$bagel = 1;
$potato = 3+(other var);
$avocado = 3-(var1+var2+var3);
$untouchedtoast = donotremove(4);

我尝试了 %s/parser(.)//g,但它只替换了内脏左侧的所有内容。尝试了其他一些通配符,但我认为我必须以某种方式将一个变量从输入正则表达式传递到输出正则表达式,我不确定这是否可能。如果这很重要,我会在 vim 中执行此操作。

想法?

标签: regexvim

解决方案


%s/parser(\(.\+\));/\1;/

搜索,使用组parser();提取所有内容,将整个表达式替换为组(),添加分号(因为它被搜索表达式吃掉了)。()\(.\+\)\1


推荐阅读