2023年政策修订增补工作正在进行中,欢迎参与!
  • Moegirl.ICU:萌娘百科流亡社群 581077156(QQ),欢迎对萌娘百科运营感到失望的编辑者加入
  • Moegirl.ICU:账号认领正在试运行,有意者请参照账号认领流程

Template:CollectCodeData

萌娘百科,万物皆可萌的百科全书!转载请标注来源页面的网页链接,并声明引自萌娘百科。内容不可商用。
跳转到导航 跳转到搜索
Template-info.svg 模板文档  [查看] [编辑] [历史] [刷新]

简介

该模板可以在条目的源代码中收集数据,并通过正则表达式进行过滤。

用法

{{CollectCodeData
|pages= 页面名,可以添加多个页面名,中间使用“,”(全角逗号)隔开。自动处理重定向
|ptns= 正则表达式,该处接受两种值,一种是一个单独的正则表达式,头尾使用“/”(斜杠)进行包裹,另一种为使用array模板生成的由多个正则表达式组成的变量组组名
|filter= 过滤用正则表达式,每个结果都会与此处的正则轮流匹配,该处接受两种值,一种是使用array模板生成的一维变量组(一组匹配规则),一种为二维变量组(多组匹配规则)
|split= 返回数据的间隔符,默认为“,”(逗号)
}}

其中,三个参数也行分别对应匿名参数1、2、3。

收集的模式为用传入的正则依次匹配所有页面的代码,将匹配的结果收集起来,而不是一层一层地过滤

若页面名中包含全角逗号,请使用{{ce|,}}进行转义。

若正则表达式中定义了捕获组,则将所有捕获组都加入收集的结果中,若未定义,则将匹配的整个字符串加入收集的结果中。

定义正则表达式组时不需要在两边加上斜杠,定义的写法请参考{{array}}模板。

大多数情况下,得到的数据都需要使用其他模板继续进行处理。

示例

通过以下两个页面的文本内容进行示例。

在风和日丽的一天,儿子站在梯子上,对母亲说:“帮我扶一把,我要摔倒了。”

母亲却说:「等一等,我在晒抱枕。」

虽然儿子觉得扶梯子更紧迫一些,但他不敢在母上大人面前说出来。

儿子突然意识到了什么,从梯子重重摔在地上,再也无法保持平衡。

“抱枕?你怎么在洗——”他不顾浑身疼痛,大声朝母亲说。

母亲却说:「你说说你,把这么好看的小姑娘困在抱枕里,天天光顾着抱,也不知道洗一下,脏成什么样了。我用清水给她泡一泡,干净的小姑娘才更俊。」

没想到儿子更加悲伤,在阳台(也可能是洗衣间、客厅等场所)悲痛欲绝地说,抱枕不能水洗……

示例1

{{collectCodeData
|pages= T:CollectCodeData/doc/Example1
|ptns= /在(...)/
}}

结果:风和日,梯子上,晒[[,母上大

示例2

{{array|new|name=patterns
|在(...)
|说...
}}
{{collectCodeData
|pages= T:CollectCodeData/doc/Example1,T:CollectCodeData/doc/Example2
|ptns= patterns
}}

结果:风和日,梯子上,晒[[,母上大,地上,,洗——,[[抱,阳台(,说:“帮,说:「等,说出来。,说。

,说:「你,说说你,,说,抱枕

:有换行是因为原先文本中就有换行;“你说说你”的第二个“说”并未被识别。

示例3

{{array|new|name=patterns
|在(...)
|说...
}}
{{array|new|name=filter
|{{array|in|%p|@}}            <!-- 将所有标点符号改为“@” -->
|{{array|in|[上抱]}}          <!-- 省略则替换为空 -->
}}
{{collectCodeData
|pages= T:CollectCodeData/doc/Example1,T:CollectCodeData/doc/Example2
|ptns= patterns
|filter= filter
}}

结果:风和日,梯子,晒@@,母大,地@,洗@@,@@,阳台@,说@@帮,说@@等,说出来@,说@

,说@@你,说说你@,说@枕