正则表达式:替换升华文本中的一些php代码

正则表达式:替换升华文本中的一些php代码,php,regex,search,replace,sublimetext3,Php,Regex,Search,Replace,Sublimetext3,我是一个regex的初学者,我想用search和replace替换Sublime Text 3编辑器中的一些代码。 下面是我试图替换的一个示例: 要查找的php代码片段: self::$_config::$_params['myKey1']['myKey2']['myKey3']['myKeyn'] 并将其替换为: self::$_config::getParam('myKey1.myKey2.myKey3.myKeyn') 可以在数组中定义一个或多个键 我的“搜索”正则表达式是: sel

我是一个regex的初学者,我想用search和replace替换Sublime Text 3编辑器中的一些代码。 下面是我试图替换的一个示例:

要查找的php代码片段:

self::$_config::$_params['myKey1']['myKey2']['myKey3']['myKeyn'] 
并将其替换为:

self::$_config::getParam('myKey1.myKey2.myKey3.myKeyn')
可以在数组中定义一个或多个键

我的“搜索”正则表达式是:

self::\$_config::\$_params\['([a-zA-Z0-9]+)(?:(('\]\[')([a-zA-Z0-9]+))*)'\]
我正在寻找一个“替换”解决方案来检索所有键,以便使用重复捕获组$2按预期格式化代码(getParam()方法而不是$_params属性):我不确定这样做是否可能,也不确定是否有最合适的方法能成功。 显然,我对$2有一个警告:“一个重复的捕获组将只捕获最后一次迭代”


谢谢大家的回答。

这些过程不可能一步到位。您只需执行至少两个查找/替换函数

  • self::$\u config::$\u params
    之后查找所有连续出现的
    \]\['
    并将其替换为

  • 然后在
    $\u params
    和语句末尾分别查找
    \['
    \']
    ,以
    getParam('
    ')替换它们。

但还有另一个解决办法

一行正则表达式解
  • 将以下字符串放在文件的最末尾:

    getParam('.')
    
  • 您可以手动或通过find
    \z
    执行最上面的步骤,并用
    getParam('.')
    方法替换所有需要的文件(这样就不会成为一行程序!)

  • 在“查找/替换”窗格上执行ALT+R以启用正则表达式搜索

  • 将下面的正则表达式复制/粘贴到搜索字段:

    ((self::\$_config::)\$_params\['(?=[\s\S]*(getParam\('))|\G(?!\A))(\w+)(?|'\](?!\s*\[)(?=[\s\S]*('\)))|'\]\['(?=[^.]*+(\.)))
    
  • 将替换字符串下面的内容复制/粘贴到替换字段中:

    \2\3\4\5
    
  • 单击“全部替换”

  • 从文件末尾删除
    getParam('.')


  • 我必须在我的编辑器中用搜索和替换替换许多文件中的这些代码。非常感谢,给我留下了深刻的印象!我必须在演示中用几个高级概念理解所有正则表达式。感谢您的ST3步骤。
    \2\3\4\5