Tools 是非官方社区Wiki。社区文档正在编写中,欢迎参与。 Wiki编辑答疑群:717421103
版本250722.2
全站通知:

帮助:解析函数/rreplace

来自WIKI实验室WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索

rreplace是一个解析函数。帮助:解析函数页列出了所有解析函数的说明。

rreplace

基于正则表达式的文本替换。出自扩展 RegexFunctions

语法

{{#rreplace:源字符串|正则表达式|替换文本}}

  • 源字符串:要处理的文本
  • 正则表达式:匹配模式(区分大小写和空格)
  • 替换文本:替换内容,支持捕获组引用(\1${1}

示例

  • {{#rreplace:Hello World|World|Wiki}} → Hello Wiki
  • {{#rreplace:bilibiliBWIKIbilibili|(b{{!}}l)|replacement=<span style="color:red">\1</span>}}bilibiliBWIKIbilibili (把b和l处理成红色标记)
  • {{#rreplace:bilibiliBWIKIbilibili|(KI)|replacement=<span style="color:red">${1}1</span>}} → bilibiliBWIKI1bilibili(把KI替换成了KI1并标红)

底层代码

来自MediaWiki及其扩展的源代码,运行在服务端。此处仅供快速查阅,便于更充分的挖掘其“特性”。

/** mediawiki-extensions-RegexFunctions-00752374efb579663a3e35fd17e8683ccd1fed77\ExtRegexFunctions.php
 * Perform a replacement on the string
 *
 * {{#rreplace:string|pattern|replacement}}
 *
 * @param Parser &$parser
 * @param PPFrame $frame
 * @param string $args
 * @return string
 */
public static function rreplace( Parser &$parser, PPFrame $frame, $args ) {
	$string = $frame->expand( array_shift( $args ) );
	$replaceFrame = $frame->newChild( $args, $frame->getTitle() );
	$pattern = self::getPatternAndOptions( $replaceFrame );

	$replacement = self::getLocalizedArgument( $replaceFrame, 'replacement', 2 );
	if ( $replacement === false ) {
		$replacement = '';
	}

	return preg_replace( $pattern, $replacement, $string );
}

实际用例

一些Wiki使用了相关特性,如下所示这个静态列表可能在下列页面更改后过时仅供批判性参考
战双帕弥什 - zspms

恋与深空 - lysk

公主连结 - pcr

奇迹暖暖 - qjnn

赛尔号 - seer

千年之旅 - elf

戴森球计划 - dsp

梦幻模拟战 - langrisser

偶像荣耀/idoly pride - idolypride

克鲁赛德战记 - cq

铃兰之剑 - llzj

天地劫 - tdj

阴阳师妖怪屋 - yysygw

世界弹射物语 - worldflipper

Core Keeper地心护核者 - corekeeper

神行少女 - breezegirl

无限暖暖 - wxnn

依盖之书 - bookofyog

英雄联盟 - lol

西游女儿国 - xxy

ActionScript 3.0 - as3