我正在使用一个名为AutoWikiBrowser的程序在维基上进行大量编辑。它基本上是使用正则表达式的搜索和替换。我想替换以下文字:
{{Infobox Book/List/Header|Second bookcase}}
{{:Book title 1|List}}
{{:Book title 2|List}}
{{:Book title 3|List}}
通过以下文字:
{{BookList|type=List/Sorted|caption=Second bookcase
|Book title 1
|Book title 2
|Book title 3
}}
我已成功提出以下正则表达式来替换第一行,找到:
\{\{Infobox Book/List/Header\|(.*?)}}
并替换:
{{BookList|type=List/Sorted|caption=$1
找到下一行中的一个或多个:
\{\{:(.*?)\|List}}
并替换为:
|$1
但是,在最后一次搜索和替换发生之后,我想在新行上添加这两个结束的大括号。我无法找到实现这一点的方法,因为在正手上我不知道会有多少书名行。有人知道一个明智的伎俩吗?
答案 0 :(得分:1)
只需添加一个新的正则表达式,将括号中的括号替换为整个书籍列表的东西:
{{BookList\|type=List\/Sorted\|caption=[^\n]+\n( \|[^\n]+\n)+
到
$0}}
显然,这需要针对可能发生的众多Wiki假阳性进行测试和调整,因为数据在那里很少是一致的。