正则表达式实现两个目标:更换和删除

时间:2012-10-21 17:38:26

标签: regex perl

我无法为这个问题设置更好的标题,但我的问题是:

给出以下形式的一行:

int a,b,var1,var2;

我需要将其转换为

形式的一行
s(a);s(b);s(var1);s(var2);
到目前为止,我有这个:

s/\b(\w)[,;]/s\(\1\);/g

但它只将其转换为

int s(a);s(b);s(var1);s(var2);

我不需要看int部分。这可以只使用一个正则表达式吗?

1 个答案:

答案 0 :(得分:0)

您可以使用正则表达式的非捕捉部分并将其设为可选部分,如下例所示:

$_ = "int a,b,var1,var2;";

s/(?:^\w+\s+)?([^;,]+)[;,]/s(\1);/g;

print $_

输出

s(a);s(b);s(var1);s(var2);