如何在camel中使用excludePattern来删除头文件?

时间:2014-07-18 20:26:14

标签: apache-camel fuseesb jbossfuse

我尝试使用骆驼的删除标题,该标题适用于某些模式,但不适用于其他模式

适用于以下模式

<removeHeaders pattern="*" />
<removeHeaders pattern="CamelFile*" />

它不适用于

<removeHeaders pattern="*File*" />

以上是否预期?

同样在排除模式中,我观察到通配符模式*根本无法识别。

        <setHeader headerName="firstCustomHeader">
            <constant>firstCustomHeader</constant>
        </setHeader>
        <setHeader headerName="secondCustomHeader">
            <constant>secondCustomHeader</constant>
        </setHeader>
        <setHeader headerName="thirdCustomHeader">
            <constant>thirdCustomHeader</constant>
        </setHeader>
        <setHeader headerName="fourthCustomHeader">
            <constant>fourthCustomHeader</constant>
        </setHeader>

         <removeHeaders pattern="*" excludePattern="fourth*|third*" />

以上删除了所有标题但排除了excludePattern值

如何实现上述相关模式?

Camel Version 2.13.1

2 个答案:

答案 0 :(得分:3)

  1. 您可以使用以下模式完成removeHeaders **文件** pattern="\w+File\w+"

  2. 同样,您的excludePattern也可以使用以下方法实现: excludePattern="fourth\w+|third\w+"

  3. 这些基本上是可以测试的正则表达式here

答案 1 :(得分:2)

是使用正则表达式或最后使用单个*作为 通配符。因此*File*无效,因为它有两个*,因此Camel假定它是正则表达式。

所以你应该做一个正则表达式

pattern=".*File.*"

如果您只有一个*是匹配通配符的简写,但*必须只有一次且位于该行的末尾,例如

pattern="File*"

语法记录在这里