簡體   English   中英

使用RegExp在JSON中查找對象

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

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