用于匹配多行 PHPDoc 注释的正则表达式
Regex for matching multi-line PHPDoc comments
/**
* Get Data
*
* @param null|ProductInterface $product
*
* @return string
* @throws LocalizedException
* @throws NoSuchEntityException
*/
我想使用正则表达式查找多行 PHPDoc,这样不同类型的 PHPDoc @ 元素之间就没有空行。例如,介于
** @return string
** @throws LocalizedException
相对于:
** @param null|ProductInterface $product
**
** @return string
如果您想知道我为什么需要它 - 我必须在不同类型的 PHPDoc @ 元素之间添加一个新的空行(在那种情况下是@param 和@throws)。
类似这样的方法可行:
正则表达式:
^ \* @([a-z]+).*\K(?=\r?\n^ \* @(?!))
^ \* @([a-z]+).*
- 捕获 PHPDoc 行并将 @
之后的任何内容放入捕获组 </code></li>
<li><code>\K
- 忘记我们刚刚捕获的所有内容,但 </code> 将保持可用
<ul>
<li><code>\K
特定于 PCRE
- 在替换中,我不想处理捕获组,所以我的目标是在我想添加新行的位置声明我的位置
(?=\r?\n^ \* @(?!))
- 在我前面应该是另一行 PHPDoc 并且 @
之后的文本不允许与存储在 </code></li> 中的文本相同
</ul>
<p><strong>替换:</strong></p>
<pre><code>\n *
https://regex101.com/r/nZpgkF/1
^ 我修改了测试字符串以拆分多个内容,以便您了解它是如何工作的。
如果 \K
在您的正则表达式风格中不可用:
正则表达式
(^ \* @([a-z]+).*)(?=\r?\n^ \* @(?!))
替换:
\n *
/**
* Get Data
*
* @param null|ProductInterface $product
*
* @return string
* @throws LocalizedException
* @throws NoSuchEntityException
*/
我想使用正则表达式查找多行 PHPDoc,这样不同类型的 PHPDoc @ 元素之间就没有空行。例如,介于
** @return string
** @throws LocalizedException
相对于:
** @param null|ProductInterface $product
**
** @return string
如果您想知道我为什么需要它 - 我必须在不同类型的 PHPDoc @ 元素之间添加一个新的空行(在那种情况下是@param 和@throws)。
类似这样的方法可行:
正则表达式:
^ \* @([a-z]+).*\K(?=\r?\n^ \* @(?!))
^ \* @([a-z]+).*
- 捕获 PHPDoc 行并将@
之后的任何内容放入捕获组</code></li> <li><code>\K
- 忘记我们刚刚捕获的所有内容,但</code> 将保持可用 <ul> <li><code>\K
特定于 PCRE- 在替换中,我不想处理捕获组,所以我的目标是在我想添加新行的位置声明我的位置
(?=\r?\n^ \* @(?!))
- 在我前面应该是另一行 PHPDoc 并且 @
之后的文本不允许与存储在 </code></li> 中的文本相同
</ul>
<p><strong>替换:</strong></p>
<pre><code>\n *
https://regex101.com/r/nZpgkF/1
^ 我修改了测试字符串以拆分多个内容,以便您了解它是如何工作的。
如果 \K
在您的正则表达式风格中不可用:
正则表达式
(^ \* @([a-z]+).*)(?=\r?\n^ \* @(?!))
替换:
\n *