代码之家  ›  专栏  ›  技术社区  ›  Pickels

Python:替换为regex

  •  46
  • Pickels  · 技术社区  · 15 年前

    我需要更换一部分绳子。我查看了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>'

    有人能告诉我我做错了什么吗?

    2 回复  |  直到 15 年前
        1
  •  79
  •   Mark Byers    15 年前

    而不是抓住你想要的部分 代替 保持 然后用参考文献 \1 将它们包含在替换字符串中。

    请改为:

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

    另外,假设这是HTML,您应该考虑使用HTML解析器来完成此任务,例如 Beautiful Soup .

        2
  •  2
  •   Rahul Agarwal    11 年前

    或者您可以使用搜索功能代替:

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