XSLT 2.0 を使用して XML 変換中に特定の文字列を分割する正規表現を作成しました。
(@VAL)((.+?)(?=@VAL|$))
この正規表現は、以下と同じ形式の文字列に適用されます。
@VAL@TEST1@1111@'Ceci est un texte'@VAL@TEST2@2222@'This is a text'@VAL@TEST3@3333@'Encore du texte'
@VAL で始まり、次の @VAL まですべてを抽出します ( ?= 構文についての説明は、そこを参照してください)。したがって、この例では、正規表現の結果は次の 3 つの文字列を提供します。
- @VAL@TEST1@1111@'Ceci est un texte'
- @VAL@TEST2@2222@'これはテキストです'
- @VAL@TEST3@3333@'Encore du texte'
残念ながら、このオンライン正規表現テスターでうまく機能したとしても、変換を実行すると次のエラーが発生します。
XTDE1140: 正規表現のエラー: net.sf.saxon.trans.DynamicError: 正規表現の文字 11 でエラーが発生しました "(@VAL)(.+?(?=@VAL|$))": expected ()) Failed toスタイルシートをコンパイルします。1 件のエラーが検出されました
では、この正規表現の問題は何ですか? 文字 11 で閉じ括弧が必要な理由がわかりません。
どんな助けでも大歓迎です。
PS: 私は saxon8 XSLT プロセッサを使用しています