Python: заменить регулярным выражением - программирование
Подтвердить что ты не робот

Python: заменить регулярным выражением

Мне нужно заменить часть строки. Я просматривал документацию на Python и нашел re.sub.

import re
s = '<textarea id="Foo"></textarea>'
output = re.sub(r'<textarea.*>(.*)</textarea>', 'Bar', s)
print output

>>>'Bar'

Я ожидал, что это напечатает '<textarea id="Foo">Bar</textarea>', а не "bar".

Может ли кто-нибудь сказать мне, что я сделал неправильно?

4b9b3361

Ответ 1

Вместо того, чтобы захватить часть, которую вы хотите заменить, вы можете захватить части, которые хотите сохранить, а затем ссылаться на них, используя ссылку \1, чтобы включить их в замещаемую строку.

Попробуйте это вместо:

output = re.sub(r'(<textarea.*>).*(</textarea>)', r'\1Bar\2', s)

Кроме того, если предположить, что это HTML, вы должны рассмотреть использование парсера HTML для этой задачи, например Beautiful Soup.

Ответ 2

Или вы могли бы просто использовать функцию поиска:

match=re.search(r'(<textarea.*>).*(</textarea>)', s)
output = match.group(1)+'bar'+match.group(2)
print output
>>>'<textarea id="Foo">bar</textarea>'