通过正则表达式发布dataweave 2.0

时间:2019-12-11 15:40:06

标签: mule-studio dataweave

我试图在dataweave 2.0中使用splitBy拆分点标记的字符串,使用简单的正则表达式避免拆分转义的字符串,在线测试正则表达式可以按预期工作,但是dataweave函数输出的结果不同。

'root.sources.data.`jenkins.branch.BranchSource`.source.traits' splitBy(/[^\.`]+|"([^`]*)"|`([^`]*)`/)

输出:

["", ".", ".", ".", ".", "." ]

预期:

["root", "sources", "data", "`jenkins.branch.BranchSource`", "source, "traits"]

1 个答案:

答案 0 :(得分:4)

您可以尝试使用超前检查来检查是否存在

'root.sources.data.`jenkins.branch.BranchSource`.source.traits' splitBy(/[.](?=(?:[^`]*`[^`]*`)*[^`]*$)/)

这将导致

[
  "root" as String {class: "java.lang.String"}, 
  "sources" as String {class: "java.lang.String"}, 
  "data" as String {class: "java.lang.String"}, 
  "`jenkins.branch.BranchSource`" as String {class: "java.lang.String"}, 
  "source" as String {class: "java.lang.String"}, 
  "traits" as String {class: "java.lang.String"}
] as Array {encoding: "UTF-8", mediaType: "*/*", mimeType: "*/*", class: "java.util.ArrayList"}