首页 > 解决方案 > 正则表达式范围选择

问题描述

我需要使用正则表达式查找 JSON 文档的键值对。问题是我无法正确理解如何确定匹配数据的选择范围。

使用这个正则表达式,

"email"\s*:\s*".*"

它将选择整个文档,直到找到最后一个"

在此处输入图像描述

但我只想选择第一个",所以选择是这样的:

“电子邮件”:“foobar@foo.bar”

为了实现这一点,我尝试使用这样的锚:

"email"\s*:\s*^".*"$

但它没有按预期工作。实现这一目标的更好方法是什么?

请注意,如果电子邮件包含双引号,则 json 字符串将如下所示:

{"email":"foo@bar.c\"om"}

在上述情况下,我们可能还需要能够跳过所有这些\"

我还需要从一个包含 1.6m + 内联 JSON 文档的大文件中获取这些数据。

游乐场:https ://regexr.com/552pt

标签: jsonregex

解决方案


只需添加一个问号,使其查找最小值而不是最大值

"email"\s*:\s*".*?"

推荐阅读