我正在尝试使用 preg_match 解析 PHPDoc 标签,但我遇到了一些负面的后视问题。我以前从未使用过这些,但我的理解是它们被用作排除项。
这是我的模式:
/\*\*.+?(?<! \*/)@access public.+? \*/\s+?function\s+[a-zA-Z0-9_]+\(
这是我试图解析的示例 PHP 文件:
<?php
/**
* This is the shortcut to DIRECTORY_SEPARATOR
*/
defined('DS') or define('DS',DIRECTORY_SEPARATOR);
/**
* Foo
*
* @return bool
* @access public
*/
function foo()
{
return true;
}
我想用@access public 标记匹配任何函数,但在这种情况下,匹配从 DS 常量的注释开始。我认为(?<! \*/)
会排除它与 DS 评论的结束评论标签匹配。
我错过了什么?