regex - 如何使用正则表达式按 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"
解决方案
(?:(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
)
推荐阅读
- java - 我在 Hangaman 游戏中错过了什么?
- ruby - 如何仅搜索和更新某些文本,而忽略某些元素名称中的文本
- node.js - Firebase FCM:主题推送通知的不同声音设置
- elasticsearch - 使用 Lambda 与带有 CloudWatch 订阅过滤器的 Firehose 发布到 ElasticSearch
- java - StackOverflowError - 这怎么可能?
- python - 类型对象不可下标 - python
- hadoop - 基于文件结构的 Hive 表创建
- laravel - 当您将调试设置为 false 时,如何在 Lumen 中隐藏 .env 密码?
- javascript - 路径上的渐变:路径转换时悬停
- php - 找不到 PHP 类控制器