三行代码  ›  专栏  ›  技术社区  ›  divix

PHP正则表达式基于定义的父项的嵌套节

  •  1
  • divix  · 技术社区  · 1 月前

    我在这里有一个用于匹配单个别名的基本原型: https://regex101.com/r/1vwKsx/1 (第节正确匹配到: 'template_path_stack' =>

    但是,我想基于节容器选择一个节(在文件中重复使用)。 在上面的链接中,我只需要匹配其中的部分: controllers => factories .

    问题是正则表达式两者都匹配(正确的和外部的)。 https://regex101.com/r/IrV0SN/1

    当前正则表达式:

    ('factories' => )(\[((?>[^\[\]]++|(?2))*)\])
    
    1 回复  |  直到 1 月前
        1
  •  2
  •   Wiktor Stribiżew    1 月前

    您可以向正则表达式添加一个必须的前缀,并使用 \K 接线员:

    'controllers' => \[\s*\K('factories' => )(\[((?>[^][]++|(?2))*)])
    

    regex demo .

    在这里

    • 'controllers' => \[ -a 'controllers' => [ 文本
    • \s* -零个或多个空白
    • \K -丢弃当前整体匹配内存缓冲区中迄今为止匹配的文本。