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

模板:Regex

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

简介

该模板为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=替换内容,默认为空字符串}}

其中,str、ptn、rep也分别对应匿名参数2、3、4。

示例1:
{{regex|replace|abc,dEf|mdf=i|,[a-z]+|000}}      <!-- 使用修饰符“i”,设置大小写不敏感 -->

结果:{{#regex:abc,dEf|/,[a-z]+/i|000}}

示例2:
{{regex|replace|abc,def|(\w+),(\w+)|$1&$2}}      <!-- 使用“$n”,引用捕获的子串 -->

结果:{{#regex:abc,def|/(\w+),(\w+)/|$1&$2}}