re.sub()
has a count
parameter that indicates how many substitutions to perform. You can just set that to 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'
Edit: And a version with a compiled SRE object:
>>> s = "baz baz foo baz foo baz"
>>> r = re.compile("foo")
>>> r.sub("bar", s, 1)
'baz baz bar baz foo baz'
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…