【发布时间】:2018-02-18 17:02:51
【问题描述】:
此问题涉及 Mule 的 MEL 和正则表达式。我有以下 JSON 有效负载。
{
"balance": "{Amount={BasicAmount=604.45, MinimumAmount=60 445, CurrencyCode=USD}}"
}
我可以访问由 balance 表示的字符串
{Amount={BasicAmount=604.45, MinimumAmount=60 445, CurrencyCode=USD}}
我需要将浮点数 604.45 作为字符串访问,并将其作为流变量应用。因此,我在我的 mule 应用程序中实现了以下代码。
<set-variable variableName="balanceUnrefined" value="#[json:balance]" doc:name="balanceUnrefined"/>
<logger message="#[flowVars.balanceUnrefined]" level="INFO" doc:name="Logger"/>
<set-variable variableName="balanceRefined" value="#[regex('\\d+\\.\\d+'.toString(), flowVars.balanceUnrefined)]" doc:name="balanceRefined"/>
<logger message="#[flowVars.balanceRefined]" level="INFO" doc:name="Logger"/>
最后一个记录器的结果显示为空。我做错了什么?是正则表达式吗?
【问题讨论】:
-
所以你需要这样的正则表达式吗?
^{Amount={BasicAmount=(([0-9]{1,3})\.([0-9]{1,2}))(.*)$您可以访问您的号码访问正则表达式的第 1 组 -
您可以在这里玩得开心:regex101.com 尝试将我的正则表达式放在正则表达式字段和字符串下方;)
-
因为你的正则表达式看起来不错,我删除了我的答案。
-
所以,我睡觉了,然后我在 mulesoft.com 获得免费试用,并使用在线设计器测试你的正则表达式没问题。我还看到最新的数据波规范是 2.0 而不是 1.0(您使用的那个)。我使用了
scan函数:这里是我的 mule-config.xml 的摘录:<ee:set-variable variableName="balance"> <![CDATA[ %dw 2.0 output application/json --- scan(vars.regexpVar, /\d+\.\d+/)[0] ]]> </ee:set-variable> </ee:variables> </ee:transform> <logger doc:id="b458c5f0-5360-40f4-b68c-b5cf1e48da51" doc:name="Logger" doc:timestamp="1518874066833" message="#[vars.balance]"/> -
如果您想获得一些反馈,或者您更愿意等待用户使用旧数据波规范 1.0 的桌面版 Anypoint Studio,请告诉我
标签: regex mule mule-studio anypoint-studio mule-esb