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

Python正则表达式(含字符例外):参考文献索引匹配异常修复

修复Python正则表达式的参考文献索引匹配问题

问题分析

原代码的两个正则表达式存在匹配逻辑漏洞:

  1. 第一个正则的字符捕获规则混乱,无法正确识别X:Y-Z这类带连字符的完整参考文献格式
  2. 第二个正则的负向断言(?!\-)无法阻止错误拆分X:Y-Z中的X:Y片段(比如把37:36-38拆成37:3),导致索引错误添加

修复后的代码

调整匹配顺序和规则,优先处理带连字符的完整格式,再匹配单独的数字冒号格式,确保匹配的是完整的目标片段:

import re

line = "thiêu (30:33). chương 36-37 ghi lại tất cả những  2:6 việc này đã thật sự xảyra như thế nào (37:36-38)."

# 第一步:匹配并处理 X:Y-Z 格式
line = re.sub(r'(\d+):(\d+)-(\d+)', r'\1:\2-\3\\index[KT]{?@?!0\1|0\2 @\1:\2-\3}', line)
print("12 => ", line)

# 第二步:匹配并处理单独的 X:Y 格式,确保后续不是数字或连字符
line = re.sub(r'(\d+):(\d+)(?![-\d])', r'\1:\2\\index[KT]{?@?!0\1|0\2 @\1:\2}', line)
print("13 => ", line)

修复说明

  1. 第一个正则r'(\d+):(\d+)-(\d+)':直接匹配数字:数字-数字的完整结构,捕获三个数字组,替换时保留原格式并追加对应索引
  2. 第二个正则r'(\d+):(\d+)(?![-\d])':使用正向否定断言(?![-\d]),确保X:Y后面不是连字符或数字,避免错误拆分已处理的X:Y-Z格式,仅匹配独立的X:Y片段

输出结果

运行修复后的代码,将得到符合预期的输出:

12 => thiêu (30:33). chương 36-37 ghi lại tất cả những 2:6 việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).
13 => thiêu (30:33\index[KT]{?@?!030|033 @30:33}). chương 36-37 ghi lại tất cả những 2:6\index[KT]{?@?!02|06 @2:6} việc này đã thật sự xảyra như thế nào (37:36-38\index[KT]{?@?!037|036 @37:36-38}).

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:40:27