regex - 用于拆分 PHPDoc 属性的正则表达式
问题描述
我得到了这个非常具体的正则表达式分配,但无法正确处理。规则是:
完全匹配 - 包含有效属性的 PHPDoc 的每一行
(有效 = 以 @property/@property-read 开头,具有名称和类型)
Group 1 - property/property-read
Group 2 - 类型,可以包含 type|NULL
Group 3 - name,可以包含 name -> otherName
Group 4 (optional) - 注释,可以包含多个单词、数字或其他字符
这是我得到的最接近的:
(?m)@(\S+) (\S+) (\S+(?: -> \S+)*) ?(.*)(?:\*\/)?
它有点工作,但是当 PHPDoc 的结尾与最后一个属性在同一行时会出现问题 - 它使其成为第 4 组的一部分。现在我不确定谁会真正这样写,但我被告知要修复它我不知道怎么做。
测试字符串:
/**
* Class Object
* @package Model\Example\Objects
* @property-read int id
* @property order_id
* @property string|NULL external_order_id -> externalOrderId
* @property string order_source
* @property int order_source_id
* @property string order_source_info foo, foo, bar.
* @property int order_status_id
* @property int date_add
* @property int date_confirmed
* @property int date_in_status
* @property string user_login
* @property string phone
* @property string email
* @property array products 21 foobar*/
解决方案
推荐阅读
- constructor - 使用构造函数参数来评估彼此依赖的最终值。颤振/飞镖
- c# - 未知客户端或客户端未启用 Identity Server 4
- haskell - 转换为具体的 Haskell 是什么意思?
- vba - 为什么变量名“1stName”改为“1 stName”?
- scala - 在 Spark 中,出现 EOF 异常的原因是什么,寻找文件末尾?
- jira - 检测特定板上何时接受错误
- swift - 如何在具有自调整大小的单元格的小型表格视图中显示一组行数
- apache-kafka - Kafka Debezium MariaDB SinkConnector
- c++ - Are non-Latin characters allowed in #error directive?
- c# - 请更正我的代码,它只是不工作,MPG 计算器