You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式替换不同panel标签为对应标题文本?

解决Panel标签替换为对应标题的问题

待处理文本:

text = "bla bla bla
 {panel:title=Realisation|borderStyle=dashed|borderColor=#cccccc|titleBGColor=#a39d9d}
 bla bla bla
 {panel:title=Definition of Done|borderStyle=dashed|borderColor=#cccccc|titleBGColor=#a39d9d} bla bla

需求:将每个{panel:title=XXX|...}格式的标签替换为对应的XXX(即title属性的值)。

尝试的错误代码

def del_tags(text):
    if text:
        CLEANR = re.compile('{panel.*?}')
        try:
            TITLES = re.search('title\=(.+?)\|', text).group(1)
        except AttributeError:
            TITLES = ""
        cleantext = re.sub(CLEANR, TITLES, text)
        return cleantext
    else: 
        return text

问题:所有标签都被替换成了Realisation。

问题原因

代码仅从整个文本中提取了第一个匹配到的title值,之后用这个固定值替换所有panel标签,导致所有标签内容一致。

正确解决方案

使用正则替换的回调函数,对每个匹配到的panel标签单独提取title值:

import re

def del_tags(text):
    if not text:
        return text
    
    def replace_panel(match):
        # 从当前匹配的标签中提取title
        title_result = re.search(r'title=(.+?)\|', match.group(0))
        return title_result.group(1) if title_result else ""
    
    # 匹配所有panel标签,逐个调用回调函数替换
    return re.sub(r'{panel.*?}', replace_panel, text)

测试结果

调用函数后,输出如下:

bla bla bla
 Realisation
 bla bla bla
 Definition of Done bla bla

内容的提问来源于stack exchange,提问作者De1f

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 17:06:28