0

以下Perl代码删除了 C 多行注释:

sub StripMultilineComments {
   my $string=shift();
   $string =~ s#/\*.*?\*/##sg; #strip multiline C comments
   return $string;
}

由于我对Perl正则表达式很陌生,所以我并不完全了解它是如何工作的。

4

1 回答 1

4

好吧,说它有效有点夸大其词。例如,

char* s1 = "/*";
char* s2 = "*/";

变成

char* s1 = "";

// /*
i = 5;
// */

变成

// 

也就是说,

  1. 第一行声明了一个sub并开始定义它。
  2. 第二行获取第一个参数并将其放入$string.
  3. 第三行使用替换运算符$string.
  4. 第四行返回转换后的字符串。

替换运算符使用的模式匹配

  1. 一个/
  2. 一个*
  3. 任意数量的字符(.*?带 /s)。
  4. 一个*
  5. 一个/

由于非贪婪修饰符 ( ?),第三个原子匹配它可以(在所需位置)的最小字符数。

于 2013-05-12T15:13:52.980 回答