我需要在'@'出现后从字符串中提取数据。示例abc @ 123456应为123456。我正在DataWeave Mule中进行htis。
请建议
答案 0 :(得分:1)
为此,您应该使用splitBy
,然后按索引获取所需的内容:
%dw 1.0
%output application/java
%var data = ("abc@123456" splitBy "@")[1]
---
data
这会将有效载荷设置为String:"123456"
答案 1 :(得分:1)
或者,您可以使用正则表达式/.*@(.*)/
查找上一次出现的@
并返回后面的组,而不管输入字符串中出现了多少@
个符号。
%dw 1.0
%output application/json
%var regex = /.*@(.*)/
%var data1 = ("abc@123456" match regex)[1]
%var data2 = ("xyz@abc@123456" match regex)[1]
%var data3 = ("xy@@z@abc@123456" match regex)[1]
%var data4 = ("name@example.com" match regex)[1]
---
result: {
data1: data1,
data2: data2,
data3: data3,
data4: data4
}
这将产生以下结果:
{
"data1": "123456",
"data2": "123456",
"data3": "123456",
"data4": "example.com"
}