首页 > 解决方案 > 如何使用正则表达式按 id 获取项目过滤器?

问题描述

我有一段文字

{
"item":
{
  id = 1,
  something
  value="value1"
  something
}
"item":
{
  value="value2"
  something
  id = 2,
  something
}
"item":
{
  id = 3,
  something
  value="value3"
  something
}
}

我想通过 id 获得价值

我试过

(value=.*)[\w\W]*?id = 2

但它得到 value="value1"

https://regex101.com/r/xraGIQ/1

标签: regex

解决方案


(?:(id = \d+)[^{}]*?(value="[^"\r\n]*")|(value="[^"\r\n]*")[^{}]*?(id = \d+))

将匹配所有对 id/value

解释:

(?:
    (id = \d+)              # group 1, id
    [^{}]*?                 # 0 or more any character but curly braces
    (value="[^"\r\n]*")     # group 2, value
  |                         # OR
    (value="[^"\r\n]*")     # group 3, value
    [^{}]*?                 # 0 or more any character but curly braces
    (id = \d+)              # group 4, id
)

演示


推荐阅读