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 に答える