模板: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 }}
結果:風和日,梯子,曬@@,母大,地@,洗@@,@@,陽台@,說@@幫,說@@等,說出來@,說@
,說@@你,說說你@,說@枕