簡體   English   中英

Scala:Select Jackson JsonNode 鍵在 Z466DEEC76ECDF23456D38ZD3F6 中使用正則表達式過濾器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM