2012-05-17 128 views
5

私は多くの単語と文字を持つ行を持っています。私はちょうど私が?={{.*}}しようとした二重の中括弧中括弧内の部分文字列を削除するためのPython正規表現

{{ }} 

に含まれている部分を削除したいが、私は何も得ていないのです。 {}は通常、正規表現での特殊文字であり、通常はその文字通りの意味を取得するには、バックスラッシュでエスケープする必要があることを

import re 
s = re.sub('{{.*?}}', '', s) 

注:

+0

が含まれています入れ子の中括弧を使用できますか? –

+0

これは、Pythonが中括弧を扱わないためです。 'from __future__ import braces'を参照してください (私は冗談です。) – SomeKittens

+0

したがって、入れ子になっていますが、連続した2つの中カッコの間には何もありません。 –

答えて

7

はこれを試してみてください。しかし、この文脈では、それらはリテラルとして解釈される。

それがオンラインで作業を参照してください:ideone

+0

mr.Thanx @ideonのために働いた –

+0

're.sub(...)'の2番目の引数に関数を渡すことができます。この関数は、マッチオブジェクトの各置換に対して呼び出されます。この関数から返される文字列は、その置換の置換文字列になります。 これは、文字列内の変数や同様のものを処理する場合に便利です。 –

4

あなたは中括弧の内側からテキストを抽出しようとしている場合は、のようなものを試してください:

import re 
s = 'apple {{pear}} orange {banana}' 
matches = re.search(r'{{(.*)}}', s) 
print matches.group(1) 

group(1)は、文字列「梨」

+0

私は既存の行から削除したい –

+0

したがって、この一致は私の場合に役立たない –

関連する問題