web-dev-qa-db-ja.com

Pythonで最初に出現した正規表現を置き換える方法は?

文字列内の正規表現の最初の出現だけを置き換えたいのですが。これを行う便利な方法はありますか?

35
girish

re.sub() には、実行する置換の数を示すcountパラメータがあります。これを1に設定するだけです。

>>> s = "foo foo foofoo foo"
>>> re.sub("foo", "bar", s, 1)
'bar foo foofoo foo'
>>> s = "baz baz foo baz foo baz"
>>> re.sub("foo", "bar", s, 1)
'baz baz bar baz foo baz'

編集:そしてコンパイルされたSREオブジェクトのバージョン:

>>> s = "baz baz foo baz foo baz"
>>> r = re.compile("foo")
>>> r.sub("bar", s, 1)
'baz baz bar baz foo baz'
51
eldarerathis

re.sub(pattern, repl, string[, count, flags])count引数を指定します

オプションの引数countは、置換されるパターンオカレンスの最大数です。 countは負でない整数でなければなりません。省略するかゼロの場合、すべての出現箇所が置き換えられます。

9
Nick T