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

如何让维基乌尔都语纠错工具忽略双括号/大括号内的文本?

乌尔都语维基百科文本纠错工具修复方案

问题

开发乌尔都语维基百科文本纠错工具时,遇到核心问题:纠错逻辑会无差别替换所有位置的错误词汇,包括维基链接([[...]])和模板({{...}})内部的内容,导致链接/模板损坏。现有代码仅能跳过[[JavaScript]]这类简单链接,无法处理包含错误词汇的完整链接(如[[source codes of JavaScript software]])或模板,需要实现完全忽略[[...]]和{{...}}块内所有文本的逻辑。

解决方案

核心思路是先将所有维基链接和模板块临时替换为唯一占位符,待外部文本纠错完成后,再将占位符还原为原始内容。这样就能彻底避免修改块内的任何内容。

具体步骤

  • 提取原文中所有[[...]]和{{...}}的内容,存储到数组中
  • 用带索引的占位符替换原文中的对应块
  • 对替换后的纯文本执行纠错替换操作
  • 将占位符还原为原始的链接/模板内容

修改后的完整代码

async function imla(imlaWords) {
    try {
        const pageTitle = mw.config.get('wgTitle');
        let pageContent = await loadPage(pageTitle);
        const originalContent = pageContent;

        // 存储提取出的链接和模板内容
        const placeholders = [];
        // 匹配所有[[...]]和{{...}},支持嵌套场景(维基语法中嵌套较少,无嵌套可简化为/\[\[.*?\]\]|\{\{.*?\}\}/g)
        const wikiBlocksRegex = /(\[\[(?:[^[\]]|(?R))*\]\]|\{\{(?:[^{}]|(?R))*\}\})/g;

        // 第一步:替换所有链接/模板为占位符
        pageContent = pageContent.replace(wikiBlocksRegex, (match) => {
            const index = placeholders.length;
            placeholders.push(match);
            return `__PLACEHOLDER_${index}__`;
        });

        // 第二步:对非块内文本执行纠错替换
        imlaWords.forEach(([incorrectWord, correctWord]) => {
            const regex = new RegExp(incorrectWord, 'g');
            pageContent = pageContent.replace(regex, correctWord);
        });

        // 第三步:将占位符还原为原始链接/模板内容
        pageContent = pageContent.replace(/__PLACEHOLDER_(\d+)__/g, (_, index) => {
            return placeholders[index];
        });

        const imlaCorrected = originalContent !== pageContent;

        if (imlaCorrected) {
            await savePage(pageTitle, pageContent);
            openDiffPage(pageTitle);
        } else {
            mw.notify('اِس صفحہ میں اصلاح کی ضرورت محسوس نہیں ہوئی۔');
        }
    } catch (error) {
        mw.notify(error.message);
    }
}

关键说明

  • wikiBlocksRegex:递归正则可匹配嵌套的链接/模板,若确认维基语法中无嵌套场景,可简化正则提升性能
  • 占位符使用唯一索引,确保还原时不会出现内容混淆
  • 纠错逻辑仅作用于替换占位符后的纯文本,完全避开链接/模板块

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 13:51:14