2

私はservicemix/camelを初めて使用し、正規表現では最高ではありませんが、どんな助けでもありがたいです。

ファイルを分割し、bindyを介して各行をクラスに変換するルートがあります。これは正常に機能します。ただし、正規表現に一致する行のみが必要です。

http://gskinner.com/RegExr/を使用して、正規表現がテストデータと一致することを確認しましたが、ルートを実行すると、すべての行が「正規表現と一致しませんでした」に移動します。

<split>
<tokenize token="\n"/>
<choice>
    <when>
        <!-- Regex: Matches on A, U or D followed by pipe | then ANYTHING, i.e.: A|azz454... -->
        <simple>${body} regex '^[AUD]\|.*'</simple>
        <unmarshal ref="bindyMasterProduct" />
        <log message="OUTPUT: ${body}"/>
    </when>
    <otherwise>
           <log message="Didnt match regex: ${body}"/>
       </otherwise>
</choice>
</split>

正規表現:

^[AUD]\|.*

マッチ:

A|AZZ709256|Cheryl

禁止-一致:

Mode|Ref|Name
4

2 に答える 2

1

正規表現は正しいですが、のようにバックスラッシュをエスケープする必要があります'^[AUD]\\|.*'

于 2012-05-02T16:26:52.733 に答える
0

私は問題を間違った方法で行っていることに気づきました。ファイルを行レベルで分割する必要はありません。bindyにすべてを任せることができます。

クラスに「skipFirstLine」アノテーションを追加し、分割されたxml全体を次のように置き換えました。

<unmarshal ref="bindyMasterProduct" />
于 2012-05-03T08:14:29.613 に答える