上一场比赛后换行的正则表达式

Regex for new line after last match

我正在使用一个名为 AutoWikiBrowser 的程序在 wiki 上进行一些批量编辑。它基本上是使用正则表达式的搜索和替换。我想替换以下文本:

{{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=

并且找到下一行或多行:

\{\{:(.*?)\|List}}

并替换为:

 |

但是,在最后一次搜索和替换发生之后,我想在新行中添加这两个右大括号。我很难找到一种方法来实现这一点,因为在正手上我不知道会有多少书名行。有人知道绝招吗?

简单地添加一个新的正则表达式来将没有括号的整个图书列表替换为一个有括号的:

{{BookList\|type=List\/Sorted\|caption=[^\n]+\n( \|[^\n]+\n)+

[=11=]}}

显然,这需要针对可能出现的大量 Wiki 误报进行测试和调整,因为那里的数据很少是一致的。

You can see it here on regex101