首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Regex用于剥离注释、多行注释和空行

Regex用于剥离注释、多行注释和空行
EN

Stack Overflow用户
提问于 2009-03-13 14:59:56
回答 9查看 39.9K关注 0票数 25

我想要解析一个文件,我想使用php和regex来剥离:

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

基本上我想删除任何包含以下内容的行

代码语言:javascript
复制
/* text */ 

或多行注释

代码语言:javascript
复制
/***
some
text
*****/

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

这有可能吗?有没有人能给我发一个正则表达式呢?

非常感谢。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-03-13 15:05:23

代码语言:javascript
复制
$text = preg_replace('!/\*.*?\*/!s', '', $text);
$text = preg_replace('/\n\s*\n/', "\n", $text);
票数 48
EN

Stack Overflow用户

发布于 2009-03-13 15:11:01

请记住,如果要解析的文件有一个字符串包含符合这些条件的内容,则使用的任何正则表达式都将失败。例如,它将如下所示:

代码语言:javascript
复制
print "/* a comment */";

如下所示:

代码语言:javascript
复制
print "";

这可能不是你想要的。但也许是这样,我不知道。无论如何,正则表达式在技术上不能以某种方式解析数据来避免这个问题。我说是技术上的,因为现代的PCRE正则表达式已经添加了大量的hack,使它们都能够做到这一点,更重要的是,不再是正则表达式,而是其他任何东西。如果您希望避免在引号内或在其他情况下剥离这些东西,那么没有什么可以替代成熟的解析器(尽管它仍然可以非常简单)。

票数 12
EN

Stack Overflow用户

发布于 2013-10-02 20:15:40

代码语言:javascript
复制
//  Removes multi-line comments and does not create
//  a blank line, also treats white spaces/tabs 
$text = preg_replace('!^[ \t]*/\*.*?\*/[ \t]*[\r\n]!s', '', $text);

//  Removes single line '//' comments, treats blank characters
$text = preg_replace('![ \t]*//.*[ \t]*[\r\n]!', '', $text);

//  Strip blank lines
$text = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $text);
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/643113

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档