我想要解析一个文件,我想使用php和regex来剥离:
基本上我想删除任何包含以下内容的行
/* text */
或多行注释
/***
some
text
*****/
如果可能,使用另一个正则表达式检查该行是否为空(删除空行)
这有可能吗?有没有人能给我发一个正则表达式呢?
非常感谢。
发布于 2009-03-13 15:05:23
$text = preg_replace('!/\*.*?\*/!s', '', $text);
$text = preg_replace('/\n\s*\n/', "\n", $text);
发布于 2009-03-13 15:11:01
请记住,如果要解析的文件有一个字符串包含符合这些条件的内容,则使用的任何正则表达式都将失败。例如,它将如下所示:
print "/* a comment */";
如下所示:
print "";
这可能不是你想要的。但也许是这样,我不知道。无论如何,正则表达式在技术上不能以某种方式解析数据来避免这个问题。我说是技术上的,因为现代的PCRE正则表达式已经添加了大量的hack,使它们都能够做到这一点,更重要的是,不再是正则表达式,而是其他任何东西。如果您希望避免在引号内或在其他情况下剥离这些东西,那么没有什么可以替代成熟的解析器(尽管它仍然可以非常简单)。
发布于 2013-10-02 20:15:40
// 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);
https://stackoverflow.com/questions/643113
复制相似问题