用于替换分隔单词的分隔符的 RegEx 表达式

问题描述

PHPStorm 中,我想通过以下方式用函数调用替换 PHP 数组变量:

$Trad['newsletter']['title']['something'];
$Trad['newsletter']['placeholder'];
$Trad['buttons']['send']['text']['small'];

结果是:

lang('newsletter.title.something');
lang('newsletter.placeholder');
lang('buttons.send.text.small');

我已经尝试过表达

\$Trad\s?\[(.+('\]\[').+)\]

但只捕获最后一次出现的 ']['

解决方法

三个键表达式的第一步:\$trad\s?\['([\w\-]+)']\['([\w\-]+)']\['([\w\-]+)'\]([^\[]) 替换为 lang('$1.$2.$3)$4。 两个键表达式的第二步:\$trad\s?\['([\w\-]+)']\['([\w\-]+)'\]([^\[]) 替换为 lang('$1.$2')$3。我优化了代码以避免超过 3 个键。