- 欢迎加入官方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}}