Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP正则表达式和DocComment值解析_Php - Fatal编程技术网

PHP正则表达式和DocComment值解析

PHP正则表达式和DocComment值解析,php,Php,我正在尝试解析doc块注释的值 $str = "/** * @title View/List Permissions * @description Allow user to view list of permissions */"; 我正在使用的代码如下所示: $re = "/^.*@title\s+(\S*).*@description\s+(\S*).*$/s"; preg_match($re, $str, $matches); 目前的结果如下: [0] View/List [

我正在尝试解析doc块注释的值

$str = "/**
 * @title View/List Permissions
 * @description Allow user to view list of permissions
 */";
我正在使用的代码如下所示:

$re = "/^.*@title\s+(\S*).*@description\s+(\S*).*$/s"; 
preg_match($re, $str, $matches);
目前的结果如下:

[0] View/List
[1] Allow
如何获得“填充视图/列表”权限并允许用户查看权限列表

我试图通过用\s+\s.*替换\s+\s**来修改正则表达式,虽然它在某种程度上起作用,但它正在从下一行添加*

任何想法都会有帮助

谢谢

试试看

/^.*@title\s+(.*)\s*\*\s*@description\s+(.*).*$/s
您遇到的问题有:

1当您执行\S*时,它会在您到达的第一个空格字符(在本例中为空格)后停止,因此您需要执行此操作*

2您需要在权限空格或返回字符后处理任意数量的空格,后面跟一个*,后面跟@description之前的任何附加空格

希望这有帮助

我将\S改为[^\n],并将字符串的其余部分与行的结尾匹配

^.*@title\s+([^\n]*).*@description\s+([^\n]*).*$
产出:

MATCH 1
1.  [14-35] `View/List Permissions`
2.  [52-90] `Allow user to view list of permissions`
[^]是一个负字符类,因此可以列出所有不想匹配的字符。[^\n]表示匹配字符不是新行