Perl Regex使用特定关键字删除c评论

时间:2011-06-20 20:59:09

标签: regex perl

我有这样的文字:

  1. / * blah blah blah blah * /
  2. / * blah blah blah jjj blah blah * /
  3. / * blah blah * /
  4. / * blah jjj
  5. blah blah * /
  6. / * blah blah * /
  7. 我想使用perl正则表达式删除以/ *开头,包含jjj并以* /结尾的部分 (删除包含特定关键字的c条评论...) 在上面的例子中,我希望只删除第2,4和5行

    非常感谢您的帮助,

    杰克

1 个答案:

答案 0 :(得分:4)

一般来说,这不太可能。由于注释,延续线等,C解析非常复杂,特殊处理。

但是,如果你有一个足够简单的案例,你可能会这样做。我保留了“// blah jjj”评论处理,因为你没有提到它。

while ($ccode =~ s/(.*?)(\/\*.*?\*\/)//s)
{
   $out .= $1;
   my $comment = $2;
   $out .= $comment unless ($comment =~ /\bjjj\b/);
}
$out .= $ccode;