【问题标题】:DataWeave matching on dynamic regex in Mulesoft 3.9Mulesoft 3.9 中动态正则表达式的 DataWeave 匹配
【发布时间】:2019-12-21 04:35:23
【问题描述】:

mule 3.9 中的 dataweave 有没有办法匹配存储在变量中的正则表达式?

最简单的例子是:

<!-- does not work -->
<dw:transform-message doc:name="Get value">
    <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
payload matches flowVars.regex
]]></dw:set-payload>
</dw:transform-message>

但这可以使用 MEL #[payload.matches(flowVars.regex)] 或简单地解决 #[regex(flowVars.regex)]

一个更详细的例子是,有一个具有以下结构的表:

regex   | value
--------------------
^typeA$ | valuefor-A
^typeB$ | valuefor-B

然后我们查询这张表并将其存储在一个变量中:

-- not real mule code
select regex, value
from tablewithregexdefinitions
into flowVars.RegexDefinitions

然后,我们尝试获取正则表达式匹配payload 字段的应用条目:

<dw:transform-message doc:name="Get value">
    <dw:set-payload><![CDATA[%dw 1.0
%output application/java
---
(flowVars.RegexDefinitions filter (payload.field matches $.regex))[0].value default "fallback-value"
]]></dw:set-payload>
</dw:transform-message>

【问题讨论】:

    标签: mule dataweave


    【解决方案1】:

    您好,在 DW 1.0 中无法做到这一点,因为当使用字符串匹配时,会将字符串转换为文字正则表达式,因此不会被解释。唯一的解决方案是创建一个全局 mel 函数并从 DW 代码中调用它。

    【讨论】:

      猜你喜欢
      • 2021-10-23
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-19
      • 1970-01-01
      • 2017-12-20
      相关资源
      最近更新 更多