正则表达式去除 phpdoc 多行注释
Posted
技术标签:
【中文标题】正则表达式去除 phpdoc 多行注释【英文标题】:Regex to strip phpdoc multiline comment 【发布时间】:2011-02-14 12:46:22 【问题描述】:我有这个:
/**
* @file
* API for loading and interacting with modules.
* More explaination here.
*
* @author Reveller <me@localhost>
* @version 19:05 28-12-2008
*/
我正在寻找一个正则表达式来去除除@token 数据之外的所有数据,因此结果将是:
@file API for loading and interacting with modules. More explaination here.
@author Reveller <me@localhost>
@version 19:05 28-12-2008
我现在有了这个:
$text = preg_replace('/\r?\n *\* */', ' ', $text);
它只完成了部分工作:它只删除了每行前面的 *。谁能帮我,所以它也去掉 /** 和最后的斜线 /?任何帮助将不胜感激!
P.S: 例如,如果 commentlbock 包含类似
/**
* @foo Here's some slashes for ya: / and \
*/
那么显然@foo 之后的斜线可能不会被剥离。结果必须是:
@foo Here's some slashes for ya: / and \
我希望那里有一位正则表达式大师 :-)
【问题讨论】:
【参考方案1】:试试
$result = preg_replace('%(\r?\n(?! \* ?@))?^(/\*\*\r?\n \* | \*/| \* ?)%m', ' ', $subject);
它将在每行的开头插入一个额外的空格,因此您可能希望在第二步中去除前导空格。
解释:
(\r?\n(?! \* ?@))?
:如果可能,匹配一个换行符,除非它后面跟着* @
^
: 断言后面的匹配从行首开始
(
: 任意匹配
/\*\*\r?\n \*
:/**<newline> *
|
或
\*/
:*/
|
: 或
\* ?
:*
,可选地后跟另一个空格
)
: 交替序列结束
【讨论】:
哇,谢谢!它就像一个魅力 :-) 修剪空白没有问题。 @Reveller,如果这解决了您的问题,您应该将答案标记为已接受,或许也可以投票。 完成了 :-) 谢谢你告诉我。我是新来的,不知道你能做到。以上是关于正则表达式去除 phpdoc 多行注释的主要内容,如果未能解决你的问题,请参考以下文章