试图删除 C 风格的注释及其分隔符。看起来很简单,但我在旋转轮子。这就是我正在尝试的:
$code =~ s/\/\*.+\*\//g;
但是,我得到的错误是:
Substitution replacement not terminated
该怎么办?
替换替换采用以下形式:
s/FIND/REPLACE/FLAGS
请注意,分隔符可以是许多字符中的任何一个。因此,在处理包含斜杠的模式时,通常最好使用不同的分隔符,例如#
.
您在此处的替换替换缺少替换部分。如果我们使用#
而不是/
作为分隔符,这可能会更清楚:
$code =~ s#\/\*.+\*\/#g;
您可能打算使用的是:
$code =~ s/\/\*.+\*\///g;
或者为了清楚起见,
$code =~ s#/\*.+\*/##g;
请注意,由于#
它被用作分隔符,因此不再需要转义/
。
你的意思是写$code =~ s/\/\*.+\*\///g;
您不必在图案中使用倾斜的牙签:
$code =~ s{ /[*] .+ [*]/ }{}gx;
虽然,您可能会意识到这并不能很好地处理所有可能性。为此,请参阅如何使用 Perl 从文件中删除多行 C 注释?