2011-11-09 26 views
2

Javascriptファイルで括弧の代わりにかっこを使用する変数を変換する必要があります。たとえば、MyVariable(i)はMyVariable [i]でなければなりません。カッコを大括弧で置き換える正規表現

は私が検索を使用してこの正規表現でのVisual Studioのツールを置き換えます。

MyVariable\({(.+)}\) 

とで置き換える:

:ような場合のために

MyVariable\[\1\] 

この作品の罰金

asdas.MyVariable(i+1) 
asdas.MyVariable(i) 
asdas.MyVariable(i).asd 
MyVariable(i+1) 

しかし、最後の1は最初の括弧とラインの最後の1を取る行うと、奇妙な行動します

if (parseInt(OtherObject.MyVariable(i+1).Dest.XYZ)==SINK_STATE_TYPE || OtherObject.MyVariable(i).X == "ok") 

のような場合には機能しません。複数のカッコがある行で動作させるには、Regexで何を変更する必要がありますか?

答えて

5

あなたのパターンは欲張りです。 (.+)部分は、最後の)文字に達するまで、閉じ括弧)文字を含むすべてのものと一致します。貪欲でないようにするには、+の代わりに#を使うことができます。これは、「前の式が1回以上出現し、可能な限り少数の文字にマッチする」ことを意味します。 .NETでは、これは通常.+?のように?を置くことによって処理されますが、Visual Studio正規表現のフレーバーは異なり、代わりに#メタ文字を使用します。

更新パターンは次のようになります。あなたはまた、)文字でない任意の文字に一致[^)]+を、使用することができます

MyVariable\({(.#)}\) 

)に遭遇すると、マッチングが停止します。この代替パターンは次のとおりです。あなたは、.NET正規表現の味に精通している場合

MyVariable\({([^)]+)}\) 

あなたが検索を拡張しましたVisual Studio 2010 Productivity Power Toolsを、チェックアウトするに興味があるかもしれない/ .NETの正規表現の風味が使用できるように交換してください。

関連する問題