我需要一个与空格,星号(*),一个或多个空格匹配的正则表达式,然后是PHP中的一个单词

时间:2013-11-07 21:40:54

标签: php regex

基本上我正在阅读docblock中的自定义注释

/**
 * This exception is thrown when no constant function is found.
 *
 * @author     Time.ly Network Inc.
 * @since      2.0
 *
 * @instantiator Ai1ec_View_Factory Category_Exception
 * @package    AI1EC
 * @subpackage AI1EC.Config
 */
class Ai1ec_Constants_Not_Set_Exception extends Ai1ec_Exception {
}

我获取了docblock,然后尝试使用

获取注释
 $r = new ReflectionClass($tokens[$i][1]);
 $doc = $r->getDocComment();
 preg_match_all('#^.*.@instantiator\s+(.*?)\n#s', $doc, $annotations);

这实际上有效,但并不是最佳选择。我试过了

 preg_match_all('#^\s\\*\s?@instantiator\s+(.*?)\n#s', $doc, $annotations);

表示匹配一个空格,一个星形,零个或一个空格@instantiator一个或多个空格然后得到任何东西直到行尾但它不起作用,没有匹配。 另外,我怎样才能在正则表达式的行尾修剪任何最终的空格?

1 个答案:

答案 0 :(得分:3)

你不需要s标志,也没有双重转义,试试这个正则表达式:

preg_match_all('#^\s*[*]\s*@instantiator\s+(.*)$#im', $doc, $annotations);

演示: http://3v4l.org/cCGbg