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>'