json - 正则表达式范围选择
问题描述
我需要使用正则表达式查找 JSON 文档的键值对。问题是我无法正确理解如何确定匹配数据的选择范围。
使用这个正则表达式,
"email"\s*:\s*".*"
它将选择整个文档,直到找到最后一个"
。
但我只想选择第一个"
,所以选择是这样的:
“电子邮件”:“foobar@foo.bar”
为了实现这一点,我尝试使用这样的锚:
"email"\s*:\s*^".*"$
但它没有按预期工作。实现这一目标的更好方法是什么?
请注意,如果电子邮件包含双引号,则 json 字符串将如下所示:
{"email":"foo@bar.c\"om"}
在上述情况下,我们可能还需要能够跳过所有这些\"
?
我还需要从一个包含 1.6m + 内联 JSON 文档的大文件中获取这些数据。
解决方案
只需添加一个问号,使其查找最小值而不是最大值
"email"\s*:\s*".*?"
推荐阅读
- adsense - 当我添加google autoad脚本进行网站验证时,Hexo自动在脚本标签中添加data-checked-head="true"属性
- javascript - 如何在通过迭代创建 HTML 表时动态设置 id,然后在 onBlur 操作中获取 ID 值?
- pandas - pandas read_csv 中的标记化错误,可以读取我下载的 csv,但不能直接从 url
- javascript - 如何将 URL 转换为可下载的 GeoJSON 文件
- python - 模糊图像的特定点并存储像素值
- winapi - 是否有资源可以找到指定 Windows API 函数的可能错误列表?
- maxima - 使用 Maxima 计算另一个函数的一阶偏导数的函数
- python - 有什么方法可以让 numpy 运行单线程以避免不确定性?
- json - 错误:无法解析 Dockerrun JSON 文件:json:无效使用 ,string struct 标签,试图将未加引号的值解组为 int
- amazon-web-services - 为什么此 Terraform 托管的 AWS Cloudfront 分发会给出错误 403 AccessDenied?