Как заменить первое вхождение регулярного выражения в Python? - PullRequest
31 голосов
/ 17 октября 2010

Я хочу заменить только первое вхождение регулярного выражения в строке.Есть ли удобный способ сделать это?

Ответы [ 2 ]

45 голосов
/ 17 октября 2010

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'
8 голосов
/ 17 октября 2010

Укажите аргумент count в re.sub(pattern, repl, string[, count, flags])

Необязательный аргумент count является максимальное количество вхождений паттернов подлежит замене; количество должно быть неотрицательное целое число. Если опущено или ноль, все вхождения будут заменен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...