[英]Find object in JSON with RegExp
我有一個JSON字符串,需要找到一個嵌套的對象,只希望返回與我的正則表達式匹配的對象。
{
"some": {
"nested": {
"stuff": [
{
"bla": "blub1",
"bar": "bar"
},
{
"bla": "blub2",
"bar": "foo"
},
{
"bla": "blub3",
"bar": "foobar"
}
]
}
}
我幾乎可以通過此reg exp /{(.*?"bar": "foo".*?)}/gs
獲得它,但這並不只返回匹配的對象。
我只希望它返回此:
{
"bla": "blub2",
"bar": "foo"
}
參見: https : //regex101.com/r/mK3oI6/3
我實際上不想使用正則表達式,但是我試圖找到在嵌套對象中找到對象的最佳解決方案,並認為它可以與正則表達式一起使用。
編輯:我不明白這不是一個很好的方法,但我只想嘗試看看正則表達式和解析JSON之間的性能,並進行深度搜索
如果您對使用正則表達式不滿意:
[^{]*?({\\s+"bla[^}]*?})
基本上,會進行非貪婪搜索,直到第一個{ <space> "bar
捕獲到第一個閉合花括號為止。
編輯:如果只需要第N個實例,則[^{]*?(?:{\\s+"bla[^}]*?}){N}[^{]*?({\\s+"bla[^}]*?})
如果只想要帶有bar的那個:foo:
.*{([^}]*bar.*?foo"[^}]*?)}
將JSON與REGEX一起使用是一個糟糕的想法。 變幻無常,很容易折斷。 最好使用一種原始的可迭代類型,使用json庫加載json,然后簡單地對它進行索引以獲取所需的數據。
您將括號放在錯誤的位置,這樣您就可以捕獲所有內容,直到找到匹配項
如果您執行{.*("bar": "foo").*}
它只會返回匹配的部分(但這是一個貪婪的搜索,請注意大小)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.