模板:CollectCodeData
跳到导航
跳到搜索
简介
该模板可以在条目的源代码中收集数据,并通过正则表达式进行过滤。
用法
{{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 }}
结果:风和日,梯子,晒@@,母大,地@,洗@@,@@,阳台@,说@@帮,说@@等,说出来@,说@
,说@@你,说说你@,说@枕