【发布时间】: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>
【问题讨论】: