正则表达式删除C风格的多行注释

时间:2013-05-12 15:11:44

标签: regex perl

有以下Perl代码,用于删除C多行注释:

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

由于我是Perl和正则表达式的新手,我并不完全理解它是如何工作的。

1 个答案:

答案 0 :(得分:4)

嗯,说它有效是在夸大事情。例如,

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

变为

char* s1 = "";

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

变为

// 

那就是说,

  1. 第一行声明sub并开始定义它。
  2. 第二行grabs第一个参数并将其放入$string
  3. 第三行使用substitution operator删除$string
  4. 中的评论
  5. 第四行返回转换后的字符串。
  6. 替换运算符使用的pattern匹配

    1. A /
    2. A *
    3. 任意数量的字符(.*? / s)。
    4. A *
    5. A /
    6. 由于非贪婪修饰符(?),第三个原子匹配它可以的最小字符数(在所需位置)。

相关问题