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'。
有没有人能告诉我我哪里出错了?
2 个回答
3
或者你可以直接使用搜索功能:
match=re.search(r'(<textarea.*>).*(</textarea>)', s)
output = match.group(1)+'bar'+match.group(2)
print output
>>>'<textarea id="Foo">bar</textarea>'
80
与其抓取你想要替换的部分,不如抓取你想要保留的部分,然后用一个引用\1
来把它们放进替换后的字符串里。
试试这个:
output = re.sub(r'(<textarea.*>).*(</textarea>)', r'\1Bar\2', s)
另外,如果这是HTML内容,你应该考虑使用一个HTML解析器来处理这个任务,比如Beautiful Soup。