fn:replace 関数
fn: replace 関数は、文字列内の各文字セットを、指定されたパターンと比較します。 fn: replace は、パターンに一致する文字を別の文字セットに置き換えます。
構文
- ソース文字列
- 置換対象の文字を含むストリング。
source-string は、リテラル・ストリング、または、xs:string 値もしくは空のシーケンスに解決される XQuery 式です。
- パターン (Pattern)
- source-string と比較される正規表現。 正規表現は、検索パターン内の 1 つのストリングまたはストリングのグループを定義する、文字、パターン・マッチング文字、および演算子のセットです。
pattern はストリング・リテラルです。
- 置換文字列
- source-string の pattern と一致する文字を置換する文字を含むストリング。
replacement-string は xs:string 値です。
- flags
- pattern の source-string への一致を制御する以下のいずれかの値を含むストリング・リテラル:
- s
- ドット (.) がすべての文字と一致することを示します。
s フラグが指定されていない場合、ドット (.) は改行文字 (#x0A) を除く任意の文字に一致します。
- m
- 脱字記号 (^) が任意の行の先頭 (改行文字の後の位置) に一致し、ドル記号 ($) が任意の行の末尾 (改行文字の前の位置) に一致することを示します。
m フラグが指定されていない場合、脱字記号 (^) はストリング全体の先頭に一致し、ドル記号 ($) はストリング全体の末尾に一致します。
- i
- 文字 "a" から "z" および "A" から "Z" について、一致で大/小文字を区別しないことを示します。
i フラグが指定されていない場合、 大/小文字を区別してマッチングが行われます。
- x
- pattern 内の空白文字 (#x09、#x0A、#x0D、および #x20) が無視されることを示します。ただし、それらが文字クラス内にある場合は除きます。 文字クラス内の空白文字が無視されることはありません。
x フラグが 指定されていない場合、空白文字を考慮してマッチングします。
戻り値
source-string が空のシーケンスでない場合、戻り値は、source-string のコピーに対して以下の操作を実行した結果の xs:string 値です。
- source-string が、pattern に一致する文字について検索される。
- source-string の 2 つのオーバーラップするサブストリングが pattern に一致する場合、先頭文字が source-string 内で最初に現れるサブストリングのみが、pattern に一致するとみなされます。
- pattern が複数の代替文字セットを含んでおり、それらの代替文字セットが source-string 内の同じ位置で始まる文字列に一致する場合、source-string 内の文字列に一致する pattern 内の最初の文字のセットのみが、pattern に一致するとみなされます。
- pattern と一致する source-string の各文字セットが、replacement-string に置換される。
pattern が source-string に検出されない場合、source-string が戻されます。
pattern がゼロ長ストリングに一致する場合、エラーが戻されます。
source-string が空のシーケンスである場合、ゼロ長ストリングが戻されます。
例
次の関数は、"a" に単一文字が続くか "b" に単一文字が続くインスタンスをすべて "*@" で置換します。
fn:replace("abbcacadbdcd","(a(.))|(b(.))","*@")戻り値は "*@*@*@*@*@cd" です。
