282.5. Operator サポート


パーサーは、単一の Operator のみをサポートするよう制限されます。

これを有効にするには、左側の値を $\{ } で囲む必要があります。構文は以下のようになります。

${leftValue} OP rightValue
Copy to Clipboard Toggle word wrap

rightValue は、$\{ } で囲まれた ' ', null, a constant value、または別の式で囲まれた String リテラルになります。

重要

演算子には、スペースを入れる 必要が あります。

Camel は rightValue の型を leftValue タイプに変換するため、空にできます。文字列を数値に変換すると > 数値の比較を使用できます。

以下の演算子がサポートされます。

Expand
Operator説明

==

EQUALS

=~

Camel 2.16: 等号(文字列値を比較すると大文字と小文字が無視)

>

は次の値よりも大きい:

>=

より大きいか等しい

<

は次の値よりも小さい:

より小さいか等しい

!=

NOT EQUALS

contains

文字列ベースの値に含まれるかどうかのテスト

not contains

文字列ベースの値に含まれていないかどうかのテスト

~~

文字列ベースの値の大文字と小文字を区別して含まれるかどうかをテストします。

regex

String 値として定義された特定の正規表現パターンに対するマッチング

not regex

String 値として定義された指定の正規表現パターンと一致しない

in

値のセットで一致する場合は、各要素をコンマで区切る必要があります。空の値を含める場合は、二重カンマ(例: ',bronze,silver,gold)を使用して定義する必要があります。これは、空の値を持つ 4 つの値のセットであり、3 つのマイタルになります。

not in

値のセットにない場合、各要素はコンマで区切る必要があります。空の値を含める場合は、二重カンマ(例: ',bronze,silver,gold)を使用して定義する必要があります。これは、空の値を持つ 4 つの値のセットであり、3 つのマイタルになります。

is

左側のタイプが instanceof the value である場合にマッチングします。

not is

左側のタイプが instanceof the value でない場合のマッチングの場合。

range

左側が number: from...to で定義される値の範囲内にある場合はマッチングし ます。Camel 2.9 以降では、範囲の値は一重引用符で囲む必要があります。

not range

左側が number: from..to で定義される値の範囲内にない場合に一致します。Camel 2.9 以降では、範囲の値は一重引用符で囲む必要があります。

は次の値で始まる

Camel 2.17.1、2.18: 左側の文字列が右側の文字列で始まるかどうかをテストするために使用します。

は次の値で終了する

Camel 2.17.1、2.18: 左側の文字列が右側の文字列で終わるかどうかをテストするために使用します。

さらに、以下の単項演算子を使用できます。

Expand
Operator説明

++

Camel 2.9: 数字を 1 つずつインクリメントします。左側は関数である必要があります。それ以外の場合は、リテラルとして解析されます。

 — 

Camel 2.9: 数値を 1 つ減らす。左側は関数である必要があります。それ以外の場合は、リテラルとして解析されます。

\

Camel 2.9.3 から 2.10.x へ 値をエスケープするには、$ 記号を示す値(例: \$)をエスケープします。特殊: 改行の場合は \n、タブには \t、キャリッジリターンには \r を使用します。注記: File 言語 を使用したエスケープはサポートされて いません。注記 : Camel 2.11 以降ではエスケープ文字のサポートはなくなりましたが、以下の 3 つの特別なエスケープに置き換えられました。

\n

Camel 2.11: 改行文字を使用します。

\t

Camel 2.11: タブ文字を使用します。

\r

Camel 2.11: キャリッジリターン文字を使用します。

\}

Camel 2.18: } 文字をテキストとして使用するには、以下を行います。

また、次の論理演算子を使用して式をグループ化できます。

Expand
Operator説明

および

代わりに && を使用してください。論理 および 演算子 は、2 つの式をグループ化するために使用されます。

または

非推奨 のため、代わりに || を使用してください。論理 or 演算子を使用して、2 つの式をグループ化します。

&&

Camel 2.9: 論理 および 演算子 を使用して 2 つの式をグループ化します。

||

Camel 2.9: 論理 or 演算子を使用して、2 つの式をグループ化します。

重要

Camel 2.4 以前 における Operator また は Simple 言語式で 1 回 のみ使用 できます。Camel 2.5 以降では、これらの Operator を複数回使用できます。

AND の構文は以下のようになります。

${leftValue} OP rightValue and ${leftValue} OP rightValue
Copy to Clipboard Toggle word wrap

OR の構文は以下のようになります。

${leftValue} OP rightValue or ${leftValue} OP rightValue
Copy to Clipboard Toggle word wrap

例:

// exact equals match
simple("${in.header.foo} == 'foo'")

// ignore case when comparing, so if the header has value FOO this will match
simple("${in.header.foo} =~ 'foo'")

// here Camel will type convert '100' into the type of in.header.bar and if it is an Integer '100' will also be converter to an Integer
simple("${in.header.bar} == '100'")

simple("${in.header.bar} == 100")

// 100 will be converter to the type of in.header.bar so we can do > comparison
simple("${in.header.bar} > 100")
Copy to Clipboard Toggle word wrap

282.5.1. 異なるタイプの比較

String や int などの異なるタイプと比較する場合は、少し注意して行ってください。Camel は左側からの型を 1 最優先として使用します。また、両方の値がそのタイプに基づいて比較できない場合には、右側のサイドタイプにフォールバックします。
これは、値を調整して特定のタイプを適用することができます。上記のバー値が String であるとします。次に、式を調節できます。

simple("100 < ${in.header.bar}")
Copy to Clipboard Toggle word wrap

これにより、int タイプが最優先で使用されるようになります。

Camel チームがバイナリー比較操作を改善し、String ベースよりも数値型を優先すると、将来的に変更される可能性があります。これはほとんどの場合、String タイプで、数字を比較する際に問題が発生します。

// testing for null
simple("${in.header.baz} == null")

// testing for not null
simple("${in.header.baz} != null")
Copy to Clipboard Toggle word wrap

正しい値が別の式であるもう少し高度な例

simple("${in.header.date} == ${date:now:yyyyMMdd}")

simple("${in.header.type} == ${bean:orderService?method=getOrderType}")
Copy to Clipboard Toggle word wrap

そしてサンプルには、タイトルに Camel という単語が含まれる場合のテスト

simple("${in.header.title} contains 'Camel'")
Copy to Clipboard Toggle word wrap

また、正規表現の例で、数字のヘッダーが 4 桁の値であるかどうかをテストします。

simple("${in.header.number} regex '\\d{4}'")
Copy to Clipboard Toggle word wrap

最後に、ヘッダーがリストの値のいずれかと等しい場合の例。各要素はコンマで区切り、スペースを入れないでください。
これは数字で機能します。Camel は各要素を左側の型に変換します。

simple("${in.header.type} in 'gold,silver'")
Copy to Clipboard Toggle word wrap

最後の 3 では、否定テストもサポートしていません。

simple("${in.header.type} not in 'gold,silver'")
Copy to Clipboard Toggle word wrap

また、タイプが特定のインスタンスであるかどうか(例: String)をテストすることができます。

simple("${in.header.type} is 'java.lang.String'")
Copy to Clipboard Toggle word wrap

以下のように記述できるように、すべての java.lang タイプに短縮名を追加しました。

simple("${in.header.type} is 'String'")
Copy to Clipboard Toggle word wrap

範囲もサポートされます。範囲の間隔は、数値と終了の両方が含まれます。たとえば、値が 100 から 199 の間であるかどうかをテストするには、以下を実行します。

simple("${in.header.number} range 100..199")
Copy to Clipboard Toggle word wrap

範囲にスペースなしの .. を使用することに注意してください。これは Groovy と同じ構文に基づいています。

Camel 2.9 以降では、範囲の値は一重引用符である必要があります。

simple("${in.header.number} range '100..199'")
Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat