fn:replace 関数
fn:replace 関数は、ストリング内のそれぞれの文字のセットを指定されたパターンと比較し、パターンに一致する文字列を別の文字のセットで置換します。
構文
>>-fn:replace(source-string,pattern,replacement-string-+--------+-)->< '-,flags-'
- source-string
- 置換される文字列を含むストリング。
source-string は、リテラル・ストリング、または xs:string 値または空のシーケンスに解決される XQuery 式です。
- pattern
- source-string と比較する正規表現。
正規表現は、検索パターン内の 1 つのストリングまたはストリングのグループを定義する、文字、パターン・マッチング文字、および演算子のセットです。
pattern はストリング・リテラルです。
- replacement-string
- 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" です。