DataWeave Mule:从特定字符后的String数据中提取

时间:2018-07-09 12:49:32

标签: dataweave mule-esb

我需要在'@'出现后从字符串中提取数据。示例abc @ 123456应为123456。我正在DataWeave Mule中进行htis。

请建议

2 个答案:

答案 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"
}