为什么我在我的正则表达式中取代'替换未终止'来替换C风格的评论?

amp*_*ent 7 regex perl

试图删除C风格的评论及其分隔符.看起来很简单,但我正在转动轮子.这就是我想要的:

$code =~ s/\/\*.+\*\//g;

但是,我得到的错误是:

Substitution replacement not terminated

该怎么办?

Jar*_* Ng 14

替换替换采取以下形式:

s/FIND/REPLACE/FLAGS

请注意,分隔符可以是许多字符中的任何一个.因此,在处理包含斜杠的模式时,通常最好使用不同的分隔符#.

您的替换替换在这里缺少替换部分.如果我们使用#而不是/作为分隔符,这可能更清楚:

$code =~ s#\/\*.+\*\/#g;

您可能打算使用的是:

$code =~ s/\/\*.+\*\///g;

或者为了清楚起见

$code =~ s#/\*.+\*/##g;

请注意,由于#它被用作分隔符,因此不再需要进行转义/.