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

如何用AutoWikiBrowser和.NET正则删除指定命名引用及其调用

.NET正则表达式实现删除含特定文本的维基百科命名引用及所有调用

核心思路

要实现目标,需分两步处理:

  1. 先捕获所有包含目标文本(比如ABC)的主引用名称
  2. 再删除所有对应名称的主引用和复用引用

.NET正则支持后向引用和多次替换,可以通过两次替换完成需求,也可使用一次性匹配的复杂正则。


第一步:捕获目标引用名称(可选,用于验证)

若需先确认要删除的引用名称,用以下正则匹配所有含ABC的主引用:

<ref name="([^"]+)">[^<]*ABC[^<]*</ref>
  • 捕获组$1会提取出引用名称(如foo、baz)

第二步:批量删除目标引用及其所有调用

方式一:分两次替换(AutoWikiBrowser友好)

替换1:删除含ABC的主引用

查找正则:

<ref name="([^"]+)">[^<]*ABC[^<]*</ref>

替换为空字符串,这一步会清除所有包含目标文本的主引用。

替换2:删除对应名称的复用引用

将第一步捕获到的名称(如foo、baz)用|拼接,作为正则匹配项:

<ref name="(foo|baz)"/>

替换为空字符串,即可清除所有对应名称的复用引用。

方式二:一次性匹配替换

利用.NET正则的回溯特性,用以下正则一次性匹配并删除所有目标引用及其调用:

<ref name="([^"]+)"(?:>[^<]*ABC[^<]*</ref>|/>)|<ref name="\1"/>

替换为空字符串,该正则会匹配两种内容:

  • 包含ABC的主引用(<ref name="name">ABC...</ref>)
  • 对应名称的复用引用(<ref name="name"/>)

测试验证

针对测试字符串:

Foo<ref name="foo">ABC</ref>ABC, foo bar<ref name="bar">XYZ</ref>, baz<ref name="baz"/>, qux<ref name="foo"/>, quux<ref name="bar"/><ref name="baz">ABC</ref>.

使用上述正则替换后,结果为:
FooABC, foo bar<ref name="bar">XYZ</ref>, baz, qux, quux<ref name="bar"/>.
完全符合需求,保留了不含ABC的bar引用及其调用。


注意事项

  • 确保AutoWikiBrowser启用了.NET正则模式(默认开启)
  • 若目标文本含特殊正则字符(如.、*),需用反斜杠转义,例如ABC\.com
  • 若引用内容包含<标签,可将[^<]*替换为[\s\S]*?(非贪婪模式)匹配任意内容,避免遗漏:
    <ref name="([^"]+)">[\s\S]*?ABC[\s\S]*?</ref>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 09:58:21