2012-05-02 19 views
1

私はservicemix/camelには新しく、正規表現では最大ではありませんが、どんな助けでも感謝します。正規表現を使用したラクダルート

私は、ファイルを分割し、各行をbindy経由でクラスに変換するルートを持っています。これは正常に動作します。しかし、私は正規表現にマッチする行だけが必要です。

使用すると、正規表現がテストデータと一致することを確認しましたが、ルートを実行すると、すべての行が「Didnt match regex」に移動します。

<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 

DONTマッチ:

Mode|Ref|Name 
+0

:http://www.regexplanet.com/advanced/java/ index.htmlは期待される結果を与えるので、私は正規表現が正しいことを99%確信しています。 –

答えて

0

私は間違った方法で問題を起こしていることに気付きました。私はラインレベルでファイルを分割する必要はありません、私はちょうどbindyは私のためにそれをすべて行うことができます。

私は私のクラスに「skipFirstLine」の注釈を追加して分割XMLの全体を置き換える:私も試した

<unmarshal ref="bindyMasterProduct" /> 
1

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

関連する問題