0

置換関数を使用して、Oracle ServiceBusxqueryトランスフォーメーション内で2つの円記号を1つの円記号に置き換えようとしています。

$ str:= replace($ srcStr、 "\\\\"、 "\\")とします。ここで、$srcStrは値"^ \\ d{1,4}$"を保持します。

しかし、何らかの理由でこれは機能しません。結果はstil"^\\ d{1,4}$"です

Altova XmlSpyなどで同じ関数を呼び出すと、これは正常に機能します。replace( "^ \\ d {1,4} $"、 "\\\\"、 "\\")の結果は^ \ d {1 、4}

OSBがソース文字列のバックスラッシュと一致しない理由を誰かが知っていますか?回避策は何でしょうか?

4

1 に答える 1

2

これはバグです。

このバグを回避するためにカスタム正規表現を書くことができます。

declare function xf:replace_test($e as element()) as xs:string {
    let $str := replace("junk (\)\ junk", ".*\\.*", "\$1")
    return $str
};
declare variable $e as element() external; 
xf:replace_test($e)`
于 2012-08-04T11:40:33.710 に答える