[英]Scala : Select the Jackson JsonNode keys using Regex filter in a json
我有示例 jsonNode 數據 - Inputstr =
{
"a.b.c.d.e":"123",
"a[0].b.c.d[0].e":"123",
"a[0].b.c.d[1].e":"123",
"a[1].b.c.d[0].e":"123",
"a[1].b.c.d[1].e":"123",
"d.e.f"="789",
"x.y.z"="789"
}
我想提取數據格式為 a[0-9*].b[0-9*].c[0-9*].d[0-9*].e[0-9*] 的鍵。 基本上,output 應該返回我,出現 0 次或多次
[ a.b.c.d.e , a[0].b.c.d[0].e, a[0].b.c.d[1].e, a[1].b.c.d[0].e, a[1].b.c.d[1].e ].
所以,我所做的是
val json = ObjectMapper.readTree(Inputstr)
val itr = json.fieldNames
現在在這個鍵迭代器上,我想創建一個通用正則表達式,它返回上面的 output。
我試過但沒有工作
val regex = """a\[[0-9\]]*.b\[[0-9\]]*.c\[[0-9\]]*.d\[[0-9\]]*.e\[[0-9\]]*""".r
while(itr.hasNext())
{
val str= itr.next()
regex.findAllIn(str)
}
我堅持創建基本上可以采用 [0-9]* 的正則表達式,它應該檢查大括號 [] 以及大括號內是否存在從 0 到 9 的數字。 即使不存在,它也應該返回我 abc.de。
我希望這是有道理的。 如果有任何問題,請告訴我。
a(?:\[\d])?\.b(?:\[\d])?\.c(?:\[\d])?\.d(?:\[\d])?\.e(?:\[\d])?
應該做這項工作,我將[0]
部分包含在一個非匹配組中,可以選擇使用?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.