質問: ### 前提・実現したいこと 初めての質問なので至らない点があったら申し訳ありません。 Matlabでの計算プログラムをC++に書き換えようとしています。 具体的には、vimを用いてMatlabでの累乗の計算a^bをC++用にpow(a,b)に書き換えようとしています。 例えば、 S^nやa^2などは、 ``` :%s/S\^n/pow(S,n)/g :%s/a\^\([0-9]*\)/pow(S,\1)/g ``` などで置換することができますが、 S^(n+1)や(a+b)^2、a^(b*(c+d))などを^の前後に()がある場合にどう対処すれば良いのか分かりません。(特に二重()の場合) どの様な正規表現を用いてvimコマンドを使えば良いのか、分かる方が居ればご教授お願いいたします。
回答: 正規表現の処理能力を超えているので無理です。 vimの「正規表現」は本来の正規表現から拡張されているのでもしかするとできるかもしれませんが、 この正規表現に取り組む時間より,手作業で実直に^をpowに書き換えてゆくほうがトータルの手間が小さい。と、思われるくらい難しいと僕は想定しますね。 まじめにやるならMATLABにおける『式』の文法を記述することになるので。 現実問題としてはシンプルな形のものだけをvimで置換して、括弧が多重になってるようなややこしいのだけを手動で編集するとか。