Мне нужно заменить какое-то значение в строке, используя регулярное выражение в Python. Образцы строк
hello @abc.def blar blar => hello abc.def blar blar
hello @abc.def.gh blar blar => hello abc.def.gh blar blar
hello @abc.def=gh blar blar => hello abc.def=gh blar blar
hello (@abc.def)gh blar blar => hello (abc.def)gh blar blar
hello @abc.def_gh blar blar => hello abc_1.def_gh blar blar
Обратите внимание, когда за @abc следует пробел, точка, знак равенства или круглая скобка, @abc будет заменено на abc, в противном случае @abc будет заменено на abc_1.
Я попытался использовать двухэтапный подход:
У меня нет проблем с шагом 2, но на первом шаге я могу определить правильный шаблон, но не уверен, как зарезервировать символ, следующий за @abc
Например,
str = "hello @abc.def blar blar"
print(re.sub(r'@abc[\.\s=]+', 'abc', str))
Это даст результат без "." символ
hello abcdef blar blar
Благодарю, если кто-нибудь может посоветовать по этому поводу.
@DyZ, спасибо тебе большое! Это именно то, что мне нужно!






Использовать опережающий просмотр docs.python.org/3/library/re.html