Primeiro, seu uso de \=submatch(0)
é excessivamente complexo, apenas use \ 0. E esteja ciente de que a sub-partida 0 é sempre o padrão totalmente compatível, portanto, seu padrão substituto tem alguma redundância. Em segundo lugar, o .
atom corresponde apenas a um caractere. E, finalmente, você precisa escapar do []
e do $
. Tente isso:
:%s/\$_POST\['.\{-}'\]/mysql_escape_string(:%s/\$_POST\['.\{-}'\]/mysql_escape_string(%pre%)/gc
)/gc
O uso de \{-}
significa corresponder a qualquer número do átomo anterior, de maneira não-gulosa (ao contrário de *
).
Também noto que seus exemplos são inconsistentes entre si. É " $POST_[...]
", " $_POST[...]
" ou apenas " $POST[...]
"?
Você pode dar uma olhada em um livro como Dominar expressões regulares .