![]() | 此模板使用Lua語言: |
該模板可以在條目的原始碼中收集數據,並通過正則表達式進行過濾。
{{CollectCodeData |pages= 頁面名,可以添加多個頁面名,中間使用“,”(全角逗號)隔開。自動處理重定向 |ptns= 正則表達式,該處接受兩種值,一種是一個單獨的正則表達式,頭尾使用“/”(斜槓)進行包裹,另一種為使用array模板生成的由多個正則表達式組成的變量組組名 |filter= 過濾用正則表達式,每個結果都會與此處的正則輪流匹配,該處接受兩種值,一種是使用array模板生成的一維變量組(一組匹配規則),一種為二維變量組(多組匹配規則) |split= 返回數據的間隔符,默認為“,”(逗號) }}
其中,三個參數也行分別對應匿名參數1、2、3。
收集的模式為用傳入的正則依次匹配所有頁面的代碼,將匹配的結果收集起來,而不是一層一層地過濾。
若頁面名中包含全角逗號,請使用{{ce|,}}
進行轉義。
若正則表達式中定義了捕獲組,則將所有捕獲組都加入收集的結果中,若未定義,則將匹配的整個字符串加入收集的結果中。
定義正則表達式組時不需要在兩邊加上斜槓,定義的寫法請參考{{array}}模板。
大多數情況下,得到的數據都需要使用其他模板繼續進行處理。
通過以下兩個頁面的文本內容進行示例。
在風和日麗的一天,兒子站在梯子上,對母親說:「幫我扶一把,我要摔倒了。」
母親卻說:「等一等,我在曬抱枕。」
雖然兒子覺得扶梯子更緊迫一些,但他不敢在母上大人面前說出來。
兒子突然意識到了什麼,從梯子重重摔在地上,再也無法保持平衡。
「抱枕?你怎麼在洗——」他不顧渾身疼痛,大聲朝母親說。
母親卻說:「你說說你,把這麼好看的小姑娘困在抱枕裡,天天光顧著抱,也不知道洗一下,髒成什麼樣了。我用清水給她泡一泡,乾淨的小姑娘才更俊。」
沒想到兒子更加悲傷,在陽台(也可能是洗衣間、客廳等場所)悲痛欲絕地說,抱枕不能水洗……
{{collectCodeData |pages= T:CollectCodeData/doc/Example1 |ptns= /在(...)/ }}
結果:風和日,梯子上,曬[[,母上大
{{array|new|name=patterns |在(...) |說... }} {{collectCodeData |pages= T:CollectCodeData/doc/Example1,T:CollectCodeData/doc/Example2 |ptns= patterns }}
結果:風和日,梯子上,曬[[,母上大,地上,,洗——,[[抱,陽台(,說:「幫,說:「等,說出來。,說。
,說:「你,說說你,,說,抱枕
注:有換行是因為原先文本中就有換行;「你說說你」的第二個「說」並未被識別。
{{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 }}
結果:風和日,梯子,曬@@,母大,地@,洗@@,@@,陽台@,說@@幫,說@@等,說出來@,說@
,說@@你,說說你@,說@枕