java MULE ESB:带有regex()函数的表达式过滤器
我有一些Json数据,比如:
{
"name" : "Italy"
}
我想用正则表达式过滤我字段“name”的内容
现在我使用这个过滤器。没有真正的错误,但不匹配
<expression-filter expression="regex('^[a-zA-Z]{3,15}$' , 'json:name')" doc:name="Expression"/>
如果我将'(.*)'
作为正则表达式模式,那么作为使用此正则表达式()函数的证明,它是有效的
<expression-filter expression="regex('(.*)' , 'json:name')" doc:name="Expression"/>
文件是here
有人理解我的错误吗
[编辑]
马修的解决方案是这样的:
<set-variable variableName="PayloadBackup" value="#[payload]" doc:name="Variable"/><json:json-to-object-transformer returnClass="java.util.Map" doc:name="JSON to Object"/>
<expression-transformer expression="#[payload['name'].matches('^[a-zA-Z]{3,15}$')]" doc:name="Expression"/>
<expression-filter expression="#[payload]" doc:name="Expression"/>
<set-payload value="#[PayloadBackup]" doc:name="Set Payload"/>
不过很难看
如果字符串与正则表达式不匹配,引擎将回答:
null (java.lang.NullPointerException). Message payload is of type: Boolean
我还没能赶上这个超量
谢谢
# 1 楼答案
我不确定您的正则表达式是否正确,但如果正确,您可以始终使用以下代码:-
它会像你期望的那样工作:)
# 2 楼答案
如果匹配错误,则返回false:
# 3 楼答案
请参阅JSON processing部分或查看this similar question