如何根据另一个值提取特定值?

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 解析器是我的首选!

【讨论】:

谢谢你,大卫!这帮助很大。

以上是关于如何根据另一个值提取特定值?的主要内容,如果未能解决你的问题,请参考以下文章

Pyspark数据帧:根据另一列的值提取列

如何根据另一个下拉菜单值禁用下拉菜单

如何根据另一个表中的 %LIKE% 值过滤表

如何根据查找具有特定值的实体在我的核心数据之间进行迭代

如何根据多对关系集是不是包含特定值使用 NSPredicate 进行过滤

使用 REGEX_EXTRACT 从重复项中提取一个值而不是另一个值