Во-первых, использование \=submatch(0)
слишком сложно, просто используйте \0. И имейте в виду, что суб-совпадение 0 всегда является полностью сопоставленным шаблоном, поэтому ваш шаблон замены имеет некоторую избыточность. Во- .
атом соответствует только одному символу. И, наконец, вам нужно избежать []
и $
. Попробуйте это вместо этого:
:%s/\$_POST\['.\{-}'\]/mysql_escape_string(\0)/gc
Использование \{-}
означает совпадение с любым числом предыдущего атома без жадности (в отличие от *
).
Я также отмечаю, что ваши примеры несовместимы друг с другом. Это " $POST_[...]
", " $_POST[...]
" или просто " $POST[...]
"?
Возможно, вы захотите взглянуть на книгу, как освоение регулярных выражений.