用于去除注释和多行注释以及空行的正则表达式

2022-08-30 16:20:44

我想解析一个文件,我想使用php和正则表达式来剥离:

  • 空行或空行
  • 单行注释
  • 多行注释

基本上我想删除任何包含

/* text */ 

或多行注释

/***
some
text
*****/

如果可能,使用另一个正则表达式来检查该行是否为空(删除空行)

这可能吗?有人可以向我发布一个正则表达式来做到这一点吗?

多谢。


答案 1
$text = preg_replace('!/\*.*?\*/!s', '', $text);
$text = preg_replace('/\n\s*\n/', "\n", $text);

答案 2

请记住,如果您正在分析的文件具有包含与这些条件匹配的内容的字符串,则您使用的任何正则表达式都将失败。例如,它会变成这样:

print "/* a comment */";

进入这个:

print "";

可能不是你想要的。但也许是,我不知道。无论如何,正则表达式在技术上无法以一种避免此问题的方式解析数据。从技术上讲,我之所以这么说,是因为现代PCRE正则表达式已经附加了许多黑客攻击,使它们既能够做到这一点,更重要的是,不再是正表达式,而是其他任何东西。如果你想避免在引号内或其他情况下剥离这些东西,那么一个完整的解析器是无可替代的(尽管它仍然非常简单)。


推荐