fn:replace 函数

fn:replace函数将字符串中的每组字符与给定的模式进行比较。 fn:replace 用另一组字符替换与模式匹配的字符。

语法

阅读语法图跳过可视化语法图fn:replace( 源字符串, 模式, 替换字符串, flags)
源字符串
包含要替换的字符的字符串。

源字符串是一个字面字符串,或者是一个解析为xs:string值或空序列的 XQuery 表达式。

模式
要与 source-string 进行比较的正则表达式。 正则表达式是一组字符、模式匹配字符和操作符,用于在搜索模式中定义一个或一组字符串。

模式是字符串字面值。

replacement-string
一个字符串,包含用于替换与 source-string 中的 pattern 相匹配的字符。

replacement-string 是 xs:string 值。

flags
字符串字面量,可以包含以下任意值,用于控制模式源字符串的匹配:
s
指示点 (.) 与任意字符相匹配。

如果未指定s标志,则点号(.)匹配除换行符( #x0A )。

m
表示插入符号(^)匹配任何行的开头(换行符后的位置),美元符号($)匹配任何行的结尾(换行符前的位置)。

如果未指定m标志,则插入符号(^)匹配整个字符串的开头,美元符号($)匹配整个字符串的结尾。

i
表示字母“a”到“z”和“A”到“Z”的匹配不区分大小写。

如果未指定 i 标志,那么会执行区分大小写匹配。

x
表示忽略模式中的空白字符( #x09、 #x0A、 #x0D 和 #x20 ),除非它们位于字符类中。 字符类中的空格字符永远不会忽略。

如果未指定 x 标志,那么空格字符会用于匹配。

返回的值

如果源字符串不是空序列,则返回值是对源字符串的副本执行以下操作后的结果,即xs:string值:
  • 将搜索 source-string 以查找与 pattern 相匹配的字符。
    • 如果源字符串中有两个重叠的子字符串与模式匹配,则只有第一个字符在源字符串中排在最前面的子字符串才被认为与模式匹配。
    • 如果模式包含两个或多个备选字符集,且备选字符集与源字符串中相同位置的字符匹配,则模式中源字符串中字符匹配的第一个字符集被视为与模式匹配。
  • pattern 匹配的 source-string 中的每组字符将替换为 replacement-string

如果源字符串中没有找到模式 ,则返回源字符串

如果模式与长度为零的字符串匹配,则返回错误。

如果 source-string 是空序列,那么会返回零长度字符串。

示例

以下函数将所有“a”后跟任何单个字符或“b”后跟任何单个字符的实例替换为“*@”。
fn:replace("abbcacadbdcd","(a(.))|(b(.))","*@")

返回值为“*@*@*@*@ *@cd ”。