如何编写正则匹配不同类型@元素间无空行的多行PHPDoc注释
PHPDoc不同类型@标签无空行场景匹配正则
适用场景
用于快速定位PHPDoc注释中,不同类型@标签直接相邻、中间未插入空行的不规范写法,方便后续批量补充空行对齐规范。
匹配规则说明
- 需匹配:两个不同类型的@标签所在行直接相邻,中间没有空行
- 忽略匹配:相同类型的@标签相邻(比如多个@param、多个@throws相邻不需要加空行)、不同@标签中间有空行的合规写法
可用正则表达式
适用于VS Code、PHPStorm等支持多行正则的编辑器,开启多行匹配模式后使用:
/\* @(\w+).*\R\h*\* @(?!\1)\w+
正则逻辑拆解
\* @(\w+):匹配PHPDoc行内的@标签,将第一个标签名捕获到分组1.*\R:匹配当前行剩余内容与换行符(\R可兼容Windows、Linux、macOS不同换行格式)\h*\*:匹配下一行开头的水平空白符与PHPDoc行固定前缀*(?!\1)\w+:否定预查,确保下一个@标签名和分组1捕获的标签名不一致,即仅匹配不同类型标签相邻的场景
匹配效果验证
可匹配的不规范写法
* @return string * @throws LocalizedException
不会匹配的合规写法
不同标签中间有空行的场景:
* @param null|ProductInterface $product * * @return string相同标签相邻的场景:
* @throws LocalizedException * @throws NoSuchEntityException
内容的提问来源于stack exchange,提问作者Pragra Mist
相关产品推荐
相关产品推荐

