我无法为这个问题设置更好的标题,但我的问题是:
给出以下形式的一行:
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
部分。这可以只使用一个正则表达式吗?
答案 0 :(得分:0)
您可以使用正则表达式的非捕捉部分并将其设为可选部分,如下例所示:
$_ = "int a,b,var1,var2;";
s/(?:^\w+\s+)?([^;,]+)[;,]/s(\1);/g;
print $_
输出
s(a);s(b);s(var1);s(var2);