Скорее всего, мы можем зафиксировать наши индексы с группой, тогда preg_replace
это, возможно, с выражением, похожим на:
\[(.+?)\]
Тест
$re = '/\[(.+?)\]/m';
$str = '$_SESSION[Name][name_2]
$_POST[Name][na-me_2]
$_GET[Name][na-me_2]
$tab[name_one]';
$subst = '[\'$1\']';
$result = preg_replace($re, $subst, $str);
echo $result;
RegEx
Если это выражение не нужно, его можно изменить / изменить в regex101.com .
Схема RegEx
jex.im визуализирует регулярные выражения:

Если мы хотим иметь больше ограничений, мы, безусловно, можем обновить это выражение.Например, если бы у нас уже были ключи с '
или "
, то мы можем просто добавить новую границу, такую как все символы, кроме '
и "
в классе char:
[^'"]*
и наше выражение станет:
\[([^'"]*?)\]
Тест
$re = '/\[([^\'"]*?)\]/m';
$str = '$_SESSION[Name][name_2]
$_POST[Name][na-me_2]
$_GET[\'Name\'][na-me_2]
$tab[name_one]
$_POST[Name]["na-me_2"]
$_POST[\'Name\']["na-me_2"]';
$subst = '[\'$1\']';
$result = preg_replace($re, $subst, $str);
echo $result;
Вывод
$_SESSION['Name']['name_2']
$_POST['Name']['na-me_2']
$_GET['Name']['na-me_2']
$tab['name_one']
$_POST['Name']["na-me_2"]
$_POST['Name']["na-me_2"]