splitBy 正则表达式问题 dataweave 2.0
splitBy regex issue dataweave 2.0
我正在尝试在 dataweave 2.0 中使用 splitBy 拆分点标记字符串,使用简单的正则表达式来避免拆分转义字符串,在线测试正则表达式按预期工作,但 dataweave 函数输出不同的结果。
'root.sources.data.`jenkins.branch.BranchSource`.source.traits' splitBy(/[^\.`]+|"([^`]*)"|`([^`]*)`/)
输出:
["", ".", ".", ".", ".", "." ]
预计:
["root", "sources", "data", "`jenkins.branch.BranchSource`", "source, "traits"]
您可以尝试使用 lookahead 来检查是否存在 `
'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"}
我正在尝试在 dataweave 2.0 中使用 splitBy 拆分点标记字符串,使用简单的正则表达式来避免拆分转义字符串,在线测试正则表达式按预期工作,但 dataweave 函数输出不同的结果。
'root.sources.data.`jenkins.branch.BranchSource`.source.traits' splitBy(/[^\.`]+|"([^`]*)"|`([^`]*)`/)
输出:
["", ".", ".", ".", ".", "." ]
预计:
["root", "sources", "data", "`jenkins.branch.BranchSource`", "source, "traits"]
您可以尝试使用 lookahead 来检查是否存在 `
'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"}