m子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>
答案 0 :(得分:3)
嗨,在DW 1.0中无法做到这一点,因为将匹配项与字符串一起使用会将字符串转换为原义正则表达式,因此不会被解释。唯一的解决方案是创建一个全局mel函数,并从DW代码中调用它。