sed - или другой инструмент для замены текста регулярного выражения - PullRequest
1 голос
/ 11 июля 2011

Мне нужно заменить все $arr[key] на $arr['key'], но не $arr[$key] или $arr[CONST] или уже переписать как $arr['key']

В конце концов $arr[key] с {$arr['key']}

Спасибо!

1 Ответ

2 голосов
/ 11 июля 2011

Вы можете попробовать что-то вроде:

perl -pe 's/(\$\w+\[\s*)(?![A-Z\d]+\b)(\w+)(\s*])/$1\'$2\'$3/g' file.php

Пример:

echo $arr[foo] $arr['ok'] $arr[3] $arr[CAPS] $arr[$var] $arr[ bar ] | perl -pe "s/(\$\w+\[\s*)(?![A-Z\d]+\b)(\w+)(\s*])/$1'$2'$3/g"
$arr['foo'] $arr['ok'] $arr[3] $arr[CAPS] $arr[$var] $arr[ 'bar' ]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...