【问题标题】:Replace a span tag with an anchor tag using a Python regex使用 Python 正则表达式将 span 标签替换为锚标签
【发布时间】:2023-03-10 17:27:01
【问题描述】:

我有一个 HTML 字符串,我想用 <a> 标签替换 <span> 标签。

从这里:

<span>
    <span data-oe-model="demo.demo" data-oe-id="33" id="a">
        @Joseph Walters
    </span>
    hi
</span>

对此:

<span>
    <a href="demo.demo/33" id="a">@Joseph Walters</a>
    hi
</span>

我想要使用 RegEx 的 3 个组:data-oe-modeldata-oe-id 和名称 @Joseph Walters

注意data-oe-modeldata-oe-id需要合并成href。

这可以通过 Python RegEx 实现吗?

我试过this

【问题讨论】:

    标签: python regex python-2.7 python-3.x


    【解决方案1】:

    你可以使用以下来匹配:

    <span data-oe-model="([^"]*)"\s+data-oe-id="([^"]*)"\s+id="([^"]*)">(.*?)\</span>
    

    并替换为以下内容:

    <a href="\1\2" id="\3">\4</a>
    

    DEMO

    【讨论】:

      【解决方案2】:

      您可以先获取 data-oe-model 和 data-oe-id 的值。然后使用 re.sub

      a="""<span><span data-oe-model="demo.demo" data-oe-id="33" id="a">@Joseph Walters</span> hi</span>"""
      data_oe_model = re.findall(r'data-oe-model="(.*?)"', a)[0]
      data_oe_id = re.findall(r'data-oe-id="(.*?)"', a)[0]
      b = re.sub('span data-oe-model="(.*?)" data-oe-id="(.*?)"', 'a href='+data_oe_model+'/'+data_oe_id, a)
      
      print  b
      
      Output: <span><a href=demo.demo/33 id="a">@Joseph Walters</span> hi</span>
      

      注意:在通过列表索引获取值时做一些验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-03-31
        • 1970-01-01
        • 1970-01-01
        • 2012-04-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-06
        相关资源
        最近更新 更多