我需要为 Wikipedia 上的 AutoWikiBrowser 机器人创建 .NET 正则表达式,但遇到问题。
这个例子相当长,但我需要一个更长的正则表达式来查找最多 14 个语言指示模板(双大括号内有 2-3 个字母,例如
{{ab}}
)并将它们合并到单个模板中(例如 {{ab}} {{cd}} {{ef}} {{gh}}
= > {{mul|ab|cd|ef|gh}}
这是我的正则表达式:
查找:
\{\{ *(ab|cd|ef|gh) *\}\} *\{\{ *(ab|cd|ef|gh) *\}\} *(\{\{ *(ab|cd|ef|gh) *\}\})* *(\{\{ *(ab|cd|ef|gh) *\}\})* *(\{\{ *(ab|cd|ef|gh) *\}\})* *(\{\{ *(ab|cd|ef|gh) *\}\})*
更换:
{{mul|$1|$2|$4|$6|$8|$10}}
它实际上按预期工作,除非模板没有用空格分隔,否则最后一个模板将无法正确捕获。您可以在此处查看测试字符串第一行的问题:https://regex101.com/r/nMUg0J/2
我想我应该使用lookaround,但我什至找不到问题出在哪里。
请注意,如果没有足够的模板进行标记,此正则表达式将创建带有无用管道的模板,但我将在第一个正则表达式之后使用其他正则表达式来删除它们:https://regex101.com/r/MuIiWS/ 1