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

Regex 正则表达式实现两个目标:替换和删除,regex,perl,Regex,Perl,我无法为这个问题设置更好的标题,但我的问题是: 给定表单的一行: int a,b,var1,var2; 我需要把它转换成一行的形式 s(a);s(b);s(var1);s(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部分。这可以只使用一个正则表达式来完成吗?您可以使用正则表达式的非捕获部分,并将其

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

给定表单的一行:

int a,b,var1,var2;
我需要把它转换成一行的形式

s(a);s(b);s(var1);s(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
部分。这可以只使用一个正则表达式来完成吗?

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

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

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

print $_
输出