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

寻求单一正则表达式高效处理维基百科转储文本的方案

解决方案

核心思路

先精准捕获目标句子(从Paul开头到philologue结尾的第一句话),再对句子内的各类维基格式做批量转换,比强行用单一正则处理整个文本更高效、易维护。

具体实现(以Python为例)

1. 捕获目标句子

用正则匹配跳过前面的信息框,直接提取第一句话:

'''Paul.*?philologue\.

(开启re.DOTALL模式,确保.能匹配换行,示例中句子是单行,实际场景中开启模式更稳妥)

2. 格式转换规则

对捕获到的句子依次执行以下替换:

  • 移除粗体标记:替换'''为空字符串
  • 处理维基链接:
    • 带|的链接:用\[\[.*?\|(.*?)\]\]替换为$1(保留|后的内容)
    • 不带|的链接:用\[\[(.*?)\]\]替换为$1(直接保留链接文本)
  • 处理日期模板:用\{\{(Date de naissance|Date de décès)\|(\d+)\|([a-zéè]+)\|(\d+)\}\}替换为$2 $3 $4(提取日、月、年组成标准日期)

完整代码示例

import re

wiki_text = """{{Infobox Biographie2|charte=linguiste
|région                  = Linguiste occidental
|idées remarquables      = [[épithète homérique]]
|œuvres principales      = * ''Introduction à l'étude comparative des langues indo-européennes'' ([[1903]])
* ''Aperçu d'une histoire de la langue grecque'' ([[1913]])
* ''Dictionnaire étymologique de la langue latine'' ([[1932]])
}}

'''Paul Jules Antoine Meillet''', né le {{Date de naissance|11|novembre|1866}} à [[Moulins (Allier)|Moulins]] ([[Allier (département)|Allier]]) et mort le {{Date de décès|21|septembre|1936}} à [[Châteaumeillant]] ([[Cher (département)|Cher]]), est le principal [[liste de linguistes|linguiste]] français des premières décennies du {{XXe siècle}}. Il est aussi [[philologue]].

== Biographie ==
D'origine bourbonnaise, fils d'un [[notaire]] de [[Châteaumeillant]] ([[Cher (département)|Cher]]), Antoine Meillet fait ses études secondaires au [[lycée Théodore-de-Banville|lycée]] de [[Moulins (Allier)|Moulins]].
"""

# 捕获目标句子
match = re.search(r"'''Paul.*?philologue\.", wiki_text, re.DOTALL)
if match:
    target = match.group(0)
    # 批量处理格式
    result = re.sub(r"'''", "", target)
    result = re.sub(r"\[\[.*?\|(.*?)\]\]", r"\1", result)
    result = re.sub(r"\[\[(.*?)\]\]", r"\1", result)
    result = re.sub(r"\{\{(Date de naissance|Date de décès)\|(\d+)\|([a-zéè]+)\|(\d+)\}\}", r"\2 \3 \4", result)
    print(result)

输出结果

Paul Jules Antoine Meillet, né le 11 novembre 1866 à Moulins (Allier) et mort le 21 septembre 1936 à Châteaumeillant (Cher), est le principal linguiste français des premières décennies du {{XXe siècle}}. Il est aussi philologue.

为什么不用单一正则直接处理?

强行用单一正则覆盖所有规则会导致表达式异常冗长,可读性和维护性极差,而且难以精准控制只处理第一句话。这种“先捕获再批量替换”的方式更符合高效、易维护的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:17:54