2016-05-02 9 views
-1

私は、私が持っているコードを修正するために私のIDEのregex findとreplaceの機能を使用しようとしています。Regexが行中の複数の一致のために見つけて置き換えます

//some-code 
myvar = ['var1','var2','var3'] 
//some-more-code 
myvar = ['othervar1','othervar2'] 

は、文字列のリストとして変数MYVARのためのいくつかの代入文があります。現在、以下のようにコードが見えます。私はそれらの文字列のリストを辞書に変換したい。キーは文字列に等しく、値は 'my' +文字列に等しくなります。交換後の外観は次のようになります。

//some-codes 
myvar = {'var1':'myvar1','var2':'myvar2','var3':'myvar3'] 
//some-more-codes 
myvar = {'othervar1':'myothervar1','othervar2':'myothervar2'} 

(私は$ 0からそれらを置き換えることができるように:私の$ 0)私が正しく、リスト内の個々の文字列を一致させるのに苦労しています。覚えておいて欲しいのは、myvarに割り当てられた文字列のリストを置き換えることだけです。文字列の他のすべてのリストはそのまま残すべきです。私は先読み(?=myvar =)(.*)'([a-z_]*)'を使ってみましたが、リストの最後の変数だけと一致します。もし私が試合を怠け者にするのであれば、それはリストの最初の変数にしかマッチしません。

助けてください。

+0

あなたは何を試そうとしていますか?リスト内の文字列? –

+0

@JamesBuckはい。リスト内の各文字列を置き換えます。 – rajendra

+0

'['と ']'の中のすべてを捕まえ、 '、'に基づいて分割し、後で何をしたいのですか? – rock321987

答えて

1

あなたのIDEを使用すると、

(?<=myvar = \['|\G',')[^']+ 

Regex demoを使用することができます\G特別なオプションをサポートしている場合。

+0

この問題は、変数名が 'var1 - > myvar1'のような形式に従わない限り、それらのうちの1つを更新すると、すべてが同時に更新されるということです。 – rock321987

+0

ありがとう。それはPycharmの文字列と正常に一致します。しかし、残念なことに、試合を '$ 1:my $ 1'に置き換えようとしたときに、何とかしてしまった。 '\ G'を正しく処理できないように見えます。 – rajendra

+0

@rajendraマッチには引用符が含まれておらず、キャプチャグループが1つもないので、 '$ 0 ':' my $ 0'と置き換える必要があります。それでもうまくいかない場合は、'([ '] +) 'を使い、代わりに' $ 1'を使います。 –

関連する問題