Python:使用正则表达式替换

47 投票
2 回答
55385 浏览
提问于 2025-04-16 05:55

我需要替换字符串的一部分。我在查阅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

撰写回答