Заменить только указанные вхождения re.sub () - Python Regex - PullRequest
0 голосов
/ 16 февраля 2020

Я играю с модулем re в python, что я застрял в том, что я хочу заменить только указанные вхождения строки. например

import re
string = "aabbaabbaabbabbaabbaa"
#I want to replace only 3rd time 'bb' appeared in the string with white space
string = re.sub("bb"," ",string,3)   #if iI do this all first 3 occurrences got replaced
print(string)

вывод

aa aa aa aabbaabbaa

любая идея, как заменить только 3-е вхождение
, чтобы вывод выглядел как Это

aabbaabbaa aabbaabbaa

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Возможно, это не идеальный способ, но это решение:

string = re.sub('bb',' ',string, 3)
string = re.sub(' ','bb',string,2)

Это просто альтернативное решение, которое я могу придумать.

1 голос
/ 16 февраля 2020

Изменить регулярное выражение так, чтобы оно соответствовало только третьему вхождению?

re.sub(r'(.*?bb.*?bb.*?)bb', r'\1 ', string, 1)

Это может быть расширено до большого числа повторений, таких как r'(.*?(bb.*?){9999})bb'

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