如何使用REGEX在JSON中的两行内进行匹配?

时间:2018-01-23 07:16:03

标签: json regex

所以JSON就像:

  "foo": {
            "points": 23.67
        },

我想要一个匹配23.67的正则表达式。

我已经尝试了\"foo\":{\"points\":([^}"]*),但它不起作用。

有多行包含"points":,因此只有\"points\":([^}"]*)无效。

2 个答案:

答案 0 :(得分:0)

你忽略了空白。

请改为尝试:

\"foo\":\s*{\s*\"points\":\s*(\d+(?:\.\d+)?)\s*}

Demo

答案 1 :(得分:0)

您的解决方案没有考虑到一些细节:

  • "foo":{之间可以有空格。
  • {之后,可以有换行符和空格。
  • "points":之后还可以有空格。
  • 在要捕获的字符串之间(捕获组和"终止"'}' 还可以有换行符和空格。

所以,包括上面遗漏的细节,并考虑到\s 匹配换行符,整个正则表达式可以如下:

\"foo\":\s*{\s*\"points\":\s*([^}"]*)\s*}

实际上,您的捕获组可能会受到更严格的限制"。 由于要捕获的文本仅包含数字和点, 它可以写成:[\d\.]+。 请注意,我将*更改为+,因为内容不能为空。