- 欢迎加入官方Discord和Telegram群组!
- 我们正在删除政治内容页面,还您一个干净的H萌娘,净化社区的同时也可以让您认真学习和讨论性知识(?
- 不知道接下来该看什么?可以去查阅本站的优质条目
- 如果您在H萌娘上发现某些内容错误/空缺,请勇于修正/添加!编辑H萌娘其实很容易!(由于遭到破坏,自动确认用户外的编辑现在会先审核 )
- 有任何意见、建议、求助都可以在 讨论版 提出!
模板:Regex
跳至導覽
跳至搜尋
簡介[編輯原始碼]
該模板為RegexParserFunctions模塊的封裝模板,使用基於PCRE庫的正則表達式對字符串的處理,包含下列功能:
- test:判斷字符串是否匹配正則
- match:返回與正則匹配的子串
- replace:根據正則替換字符串
若要將該模板置於其他字符串處理或邏輯判斷的模板中,建議先單獨拿出來測試,確保正則以及修飾符的正確。因為該模板已經屏蔽了原模塊拋出的系統級錯誤(系統級錯誤有可能導致在頁面後退時發生編輯丟失)。
用法與示例[編輯原始碼]
關於修飾符的使用,請參考:PHP官方文檔:模式修飾符
該模板所有方法的ptn
參數均支持以<nowiki>
標籤包裹的格式傳入。
test[編輯原始碼]
判斷字符串是否匹配正則,匹配則返回1,否則返回空。
{{regex|test|str=字符串 |ptn=正则 |mdf=修饰符 |then= 如果匹配则输出,默认为1 |else= 否则输出,默认为空}}
其中,str、ptn、then、else也分別對應匿名參數2、3、4、5。
- 示例:
{{regex|test|123,456|\d+,\d+|true|false}}
結果:true
match[編輯原始碼]
返回與正則匹配的子串,若未匹配到,則返回空。
{{regex|match|str=字符串 |ptn=正则 |mdf=修饰符}}
其中,str和ptn也分別對應匿名參數2和3。
- 示例:
{{regex|match|123,456|,\d+}}
結果:{{#regex:123,456|/,\d+/}}
replace[編輯原始碼]
根據正則替換字符串,若未匹配到,則原樣返回。
{{regex|replace|str=字符串 |ptn=正则 |mdf=修饰符 |rep=替换内容,默认为空字符串 |lim= 次数限制,默认为无限制}}
其中,str、ptn、rep、lim也分別對應匿名參數2、3、4、5。
- 示例1:
{{regex|replace|abc,dEf|mdf=i|,[a-z]+|000}} <!-- 使用修饰符“i”,设置大小写不敏感 -->
結果:{{#regex:abc,dEf|/,[a-z]+/i|000|-1}}
- 示例2:
{{regex|replace|abc,def|(\w+),(\w+)|$1&$2}} <!-- 使用“$n”,引用捕获的子串 -->
結果:{{#regex:abc,def|/(\w+),(\w+)/|$1&$2|-1}}