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
patternsource-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-stringpattern に一致する文字列が検索されます。
    • source-string の 2 つのオーバーラップするサブストリングが pattern に一致する場合、先頭文字が source-string 内で最初に現れるサブストリングのみが、pattern に一致するとみなされます。
    • pattern が複数の代替文字セットを含んでおり、それらの代替文字セットが source-string 内の同じ位置で始まる文字列に一致する場合、source-string 内の文字列に一致する pattern 内の最初の文字のセットのみが、pattern に一致するとみなされます。
  • pattern に一致する source-string 内のそれぞれの文字のセットが、replacement-string に置換されます。

patternsource-string に検出されない場合、source-string が戻されます。

pattern がゼロ長ストリングに一致する場合、エラーが戻されます。

source-string が空のシーケンスである場合、ゼロ長ストリングが戻されます。

次の関数は、"a" に単一文字が続くか "b" に単一文字が続くインスタンスをすべて "*@" で置換します。
fn:replace("abbcacadbdcd","(a(.))|(b(.))","*@")

戻り値は "*@*@*@*@*@cd" です。