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

如何用单条正则替换|arquivourl=与|arquivodata=为|wayb=?

单条正则实现双向参数顺序的替换需求

可以用单条正则解决这个问题,核心是修正原正则中可能导致目标参数被意外包含在捕获组的问题,确保无论arquivodata/archive-date在arquivourl/archive-url的前后,都能被精准匹配并移除,同时保留其他参数并生成|wayb=。

改进后的正则表达式

查找模式:

(\{\{(?:cite|citar?)(?:(?!\| ?(?:arquivodata|dataarquivo|archive-?date|arquivourl|urlarquivo|archive-?url) ?=).)*)(?:\| ?(?:arquivodata|dataarquivo|archive-?date) ?=.*?(?=\||\}))?(.*?)(?:\| ?(?:arquivourl|urlarquivo|archive-?url) ?= ?https?://web\.archive\.org/web/(\d+)/.*?(?=\||\}))?(.*?)(?:\| ?(?:arquivodata|dataarquivo|archive-?date) ?=.*?(?=\||\}))?(.*?)\}\}

替换模式:

$1$2|wayb=$3$4$5}}

关键改进点

  1. 限制捕获组$1的匹配范围:把原正则中$1里的.*?替换为(?:(?!\| ?(?:arquivodata|dataarquivo|archive-?date|arquivourl|urlarquivo|archive-?url) ?=).)*——这是一个负向预查的原子匹配,确保$1只捕获到第一个目标参数(date或url)之前的所有内容,避免引擎将date参数错误包含在$1中导致无法移除。
  2. 保留双向可选匹配:通过前后两个可选非捕获组匹配date参数,无论它出现在url的前面还是后面,都会被正则匹配并排除在最终输出之外。
  3. 精准捕获Wayback日期:依然通过(\d+)捕获web.archive.org URL中的日期戳,用于生成|wayb=参数值。

验证示例

示例1:date参数在url参数之后

原始内容:

{{cite news|title=测试标题|arquivourl=https://web.archive.org/web/20240101/https://example.com|arquivodata=2024-01-01}}

替换后结果:

{{cite news|title=测试标题|wayb=20240101}}

示例2:date参数在url参数之前

原始内容:

{{cite news|title=测试标题|arquivodata=2024-01-01|arquivourl=https://web.archive.org/web/20240101/https://example.com}}

替换后结果:

{{cite news|title=测试标题|wayb=20240101}}

示例3:仅存在url参数

原始内容:

{{cite news|title=测试标题|arquivourl=https://web.archive.org/web/20240101/https://example.com}}

替换后结果:

{{cite news|title=测试标题|wayb=20240101}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:14:57