【问题标题】:PHP Regex the nested section based on defined parentPHP Regex 基于定义的父级的嵌套部分
【发布时间】:2022-01-05 22:00:19
【问题描述】:

我正在尝试根据别名匹配配置的嵌套内容部分。

我有用于匹配单个别名的基本原型:https://regex101.com/r/1vwKsx/1(部分正确匹配:'template_path_stack' =>

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

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

当前正则表达式:

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

【问题讨论】:

  • @WiktorStribiżew 该死的,你很好。这是完美的谢谢!添加一个答案,我会正确标记。

标签: php regex


【解决方案1】:

您可以为正则表达式添加一个强制性前缀并使用\K 运算符丢弃匹配的文本:

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

请参阅regex demo

这里,

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

【讨论】:

    猜你喜欢
    • 2010-12-15
    • 2018-08-06
    • 2015-02-14
    • 1970-01-01
    • 2014-04-20
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2012-12-12
    相关资源
    最近更新 更多