首页 > 解决方案 > Dataweave:将正则表达式模式匹配到数组的每个元素

问题描述

我有一个数组 ["NJK","NST","NIR"] 我想迭代它并将它的每个元素与此模式匹配 /^N.*[^1]$/ (以 N 开头并且没有t 以 1) 结尾并返回 'true',即使出现这样的情况也是如此。如何使用 dataweave 遍历数组?

标签: arraysloopsdataweave

解决方案


您可以使用matches匹配您的 REGEX 模式。

选项 1:(如果它与您拥有的模式匹配,这将用布尔值替换该项目。)

输入:

%dw 2.0
import * from dw::core::Arrays
var sample = ["NJK","NST","NIR"]
output application/json
---
sample map ($ matches /^N.*[^1]$/ )

输出:

[
  true,
  true,
  true
]

选项 2:(如果您想检查是否有任何项目是matched并且只返回一个布尔值,您可以使用some

输入:

%dw 2.0
import * from dw::core::Arrays
var sample = ["NJK","NST","NIR"]
output application/json
---
sample some ($ matches /^N.*[^1]$/ )

输出:

true

选项 3:您还可以将NOT isEmpty组合与match (ie: !isEmpty(<expression>))结合使用。

输入:

%dw 2.0
var sample = ["NJK","NST","NIR"]
output application/json
---
!isEmpty(sample[?($ matches /^N.*[^1]$/ )])

输出:

true


推荐阅读