【问题标题】:Regex to match docblock for specific function正则表达式匹配特定功能的文档块
【发布时间】:2021-07-31 03:52:08
【问题描述】:

我正在尝试编写一个正则表达式来匹配特定函数的 docblock / phpdoc 注释。

例如,给定以下类:

<?php

namespace App\Providers;

use Illuminate\Support\ServiceProvider;

class AppServiceProvider extends ServiceProvider
{
    /**
     * Register any application services.
     *
     * @return void
     */
    public function register()
    {
        //
    }

    /**
     * Bootstrap any application services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

我想编写一个正则表达式,可以匹配特定方法的文档块,由其名称标识。

我尝试使用正向前瞻来匹配函数定义,但尝试匹配boot 方法的文档块总是从register 方法的文档块中选择:

(\h*/\*\*(.|\n)*\*/\n)(?=\h*.* boot)

给我:

我确实想在注释开始之前捕获前面的空格,以及函数定义行之前的最后一个换行符。

任何帮助将不胜感激!

【问题讨论】:

标签: regex


【解决方案1】:

对于给定的示例,您可以使用

^\h*/\*\*(?:\R\h*\*.*)*\R\h*\*/\R(?=.*\bfunction boot\b)
  • ^ 字符串开始
  • \h*/\*\* 匹配可选空格和/**
  • (?:\R\h*\*.*)* 匹配以下所有以可选空格和* 开头的行
  • \R\h*\*/ 匹配换行符、可选空格和*/
  • \R将该行前的最后一个换行符与函数定义匹配
  • (?=.*\bfunction boot\b) 正向超前断言 function boot 向右

Regex demo

【讨论】:

  • 非常感谢!这正是我想要的!
猜你喜欢
  • 2021-12-04
  • 2012-02-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多