2016-07-02 12 views
6

に一致するすべての出現は、私は次のように'.00.''.11.'を含む文字列を検索する正規表現持って交換してください:私がやりたい何は正規表現

.*\.(00|11)\..* 

することで、パターンに一致するすべてのオカレンスを置き換えています'X00X'または'X11X'です。たとえば、文字列'.00..0..11.''X00X.0.X11X'になります。

私はPython re.subメソッドを探していましたが、これを効果的に行う方法がわかりません。返される一致オブジェクトは、最初のオカレンスでのみ一致するため、うまく動作しません。何かアドバイス?私はちょうどこのタスクの文字列置換を使用する必要がありますか?ありがとう。

答えて

8

re.sub()は一致するものをすべて置き換えますが、.*を使用すると正規表現があまりにも多く一致する可能性があります(他の場合も.00.など)。単純に実行します。パターンが重複しないことを

In [2]: re.sub(r"\.(00|11)\.", r"X\1X", ".00..0..11.") 
Out[2]: 'X00X.0.X11X' 

注:

In [3]: re.sub(r"\.(00|11)\.", r"X\1X", ".00.11.") 
Out[3]: 'X00X11.' 
+0

は使用検索をre.subと一致しませんか?私は使用していました。 –

+0

Pythonでは 'match'は文字列の先頭で一致するものを検索しますが、文字列の完全一致は必要ありません。 're.sub'は、パターンにマッチするすべての重複していないシーケンスを見つけ、それらを置き換えます。 –