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

tkinter编辑器使用re替换Java关键字为HTML标签仅单次生效问题

问题原因

你的代码存在两个核心问题导致只有最后一个关键字被替换:

  1. 每次替换逻辑都基于最原始的text变量执行,每次新生成的text_after都会覆盖上一轮的替换结果,最终仅保留最后一个匹配关键字的替换效果。
  2. 按空格拆分单词的匹配方式容错性极低,遇到制表符、多连续空格、关键字紧挨标点/括号的场景都会匹配失败,且未做单词边界限制,容易误替换包含关键字片段的普通变量名。

修复后的代码

直接替换原print_html函数即可:

def print_html():
    """Print html"""
    text = txt_edit.get(1.0, tk.END)
    for keyword in keywords:
        # 用单词边界\b限制精准匹配关键字,re.escape避免特殊字符异常
        text = re.sub(rf'\b{re.escape(keyword)}\b', f'<span class="keyword">{keyword}</span>', text)
    print(text)

优化说明

  • 直接遍历关键字列表执行替换,不需要逐行逐词拆分文本,代码更简洁高效
  • 每次替换都直接更新text变量,所有替换效果会叠加保留,不会出现之前的覆盖问题
  • 新增的正则单词边界和转义逻辑,可避免误匹配包含关键字的普通字符串,适配更多代码书写场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 18:36:03