Python:用正则expression式replace

我需要replacestring的一部分。 我正在浏览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>'而不是“酒吧”。

有谁能告诉我我做错了什么?

您可以捕获要保留的部分,而不是捕获要replace的部分,然后使用引用\1引用它们以将其包含在replace的string中。

试试这个:

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

另外,假设这是HTML,你应该考虑使用一个HTMLparsing器来完成这个任务,例如Beautiful Soup 。

或者你可以使用searchfunction:

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