0

我有这个 json 文件。部分内容如下:

{ "has_more" : false,
  "items" : [ { "aliases" : [ "http://www.stackoverflow.com" ],
        "api_site_parameter" : "stackoverflow",
        "markdown_extensions" : [ "Prettify" ],
        "name" : "Stack Overflow",
        "related_sites" : [ { "name" : "Stack Overflow Chat",
              "relation" : "chat",
              "site_url" : "http://chat.stackoverflow.com"
            } ],
        "site_state" : "normal",
        "site_type" : "main_site",
        "site_url" : "http://stackoverflow.com",
        "styling" : { "link_color" : "#0077CC",
            "tag_background_color" : "#E0EAF1",
            "tag_foreground_color" : "#3E6D8E"
          }
      },
      { "api_site_parameter" : "serverfault",
        "markdown_extensions" : [ "Prettify" ],
        "name" : "Server Fault",
        "related_sites" : [ { "api_site_parameter" : "meta.serverfault",
              "name" : "Meta Server Fault",
              "relation" : "meta",
              "site_url" : "http://meta.serverfault.com"
            },
            { "name" : "Chat Stack Exchange",
              "relation" : "chat",
              "site_url" : "http://chat.stackexchange.com"
            }
          ],
        "site_state" : "normal",
        "site_type" : "main_site",
        "site_url" : "http://serverfault.com",
        "styling" : { "link_color" : "#10456A",

我想匹配字符串

        "related_sites" : [ { "name" : "Stack Overflow Chat",
              "relation" : "chat",
              "site_url" : "http://chat.stackoverflow.com"
            } ],

        "related_sites" : [ { "api_site_parameter" : "meta.serverfault",
              "name" : "Meta Server Fault",
              "relation" : "meta",
              "site_url" : "http://meta.serverfault.com"
            },
            { "name" : "Chat Stack Exchange",
              "relation" : "chat",
              "site_url" : "http://chat.stackexchange.com"
            }
          ],

不启用多行。知道怎么做吗?

4

2 回答 2

1

“启用多行”正是您匹配多行的方式。这就是为什么它被称为“多行”。但是由于它所做的只是更改.为 include \n,因此您可以(.|\n)改为编写。

但鉴于这是 JSON,你到底为什么要在上面使用正则表达式?只需将其解析为数据结构并从那里开始工作。

data = json.loads(json_string)
for item in data['items']:
    print item['related_sites']
于 2013-01-17T18:42:54.617 回答
0

如果“related_sites”元素中没有数组,请尝试:

"related_sites" : \[(?:[^\]]*\n?)*\]

于 2013-01-17T19:09:22.620 回答