【问题标题】:Regex to strip phpdoc multiline comment正则表达式去除 phpdoc 多行注释
【发布时间】: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 \

我希望那里有一位正则表达式大师 :-)

【问题讨论】:

    标签: regex comments phpdoc strip


    【解决方案1】:

    试试

    $result = preg_replace('%(\r?\n(?! \* ?@))?^(/\*\*\r?\n \* | \*/| \* ?)%m', ' ', $subject);
    

    它将在每行的开头插入一个额外的空格,因此您可能希望在第二步中去除前导空格。

    解释:

    (\r?\n(?! \* ?@))?:如果可能,匹配一个换行符,除非它后面跟着* @

    ^: 断言后面的匹配从行首开始

    (: 任意匹配

    /\*\*\r?\n \*:/**&lt;newline&gt; *

    |

    \*/:*/

    |: 或

    \* ?:*,可选地后跟另一个空格

    ): 交替序列结束

    【讨论】:

    • 哇,谢谢!它就像一个魅力 :-) 修剪空白没有问题。
    • @Reveller,如果这解决了您的问题,您应该将答案标记为已接受,或许也可以投票。
    • 完成了 :-) 谢谢你告诉我。我是新来的,不知道你能做到。
    猜你喜欢
    • 2010-10-13
    • 2010-11-08
    • 2021-09-03
    • 2011-01-28
    • 2019-08-31
    • 2012-04-08
    • 2012-02-09
    • 2016-07-20
    相关资源
    最近更新 更多