如何根据另一个值提取特定值?
Posted
技术标签:
【中文标题】如何根据另一个值提取特定值?【英文标题】:How do I extract particular value based another another value? 【发布时间】:2020-06-08 08:30:45 【问题描述】:所以我希望能够根据该对象是否具有特定属性来提取和 ID。我需要通过正则表达式来完成。这是我正在使用的 JSON 示例:
"workspaceid": ws01,
"data":
"workspacetitle": "My Workspace"
,
"collections":
"projects": [
"id": 01,
"data":
"title": "My Project 01",
"enddateperiod": "2020-02-20T23:59:59",
"profilecomplete": true,
"synced": false
,
"lists":
"projectcode": [
"id": pcodered,
"data":
"code": "myproject123",
"name": "OffshoreProject"
]
,
"id": 02,
"data":
"title": "My Project 02",
"enddateperiod": "2020-02-20T23:59:59",
"profilecomplete": false,
"synced": false
,
"lists":
"projectcode": [
"id": pcodered,
"data":
"code": "myproject123",
"name": "OffshoreProject"
]
]
所以我要提取的是配置文件不完整的项目的ID(“profilecomplete”:false)。所以在这种情况下,我想选择项目 2 的 id(即 02)。
如何通过正则表达式做到这一点?我已经设法删除了所有的空格和新行,所以 JSON 基本上都是一长行。像这样提取正则表达式会更容易吗?无论哪种方式,我都可以使用一些帮助来获取此 ID。
注意:JSON 的格式不能更改。
【问题讨论】:
为什么必须使用 Regex 而不是 JSON 解析器? 这是我被告知的。你能帮忙吗? 那么这是某种学校作业?因为这不可能是这样做的最佳途径...... 我明白了,但最好的路线并不是我想要的。感谢大家至少考虑我的问题。 【参考方案1】:这个有效
/"id": ([^,]*?)(?=,[^]*[^]*"profilecomplete": false)/
解释:
-
首先读取所有这些字符 "id":[space]
然后读入不是“,”的组字符
然后是前瞻:您期望“,”,然后是不是“”的字符,然后是“”;最后,在匹配结束“”之前,您要阅读 "profilecomplete": false
但我同意 JSON 解析器是我的首选!
【讨论】:
谢谢你,大卫!这帮助很大。以上是关于如何根据另一个值提取特定值?的主要内容,如果未能解决你的问题,请参考以下文章