You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用正则表达式缩减Google位置历史JSON大文件体积?

处理巨型Google位置历史JSON的正则方案(避免内存崩溃)

我完全懂你这种崩溃的感受——几十MB的JSON硬塞给GUI工具,要么直接无响应,要么加载半天后炸掉。用正则流式处理是个聪明的思路,核心就是不把整个文件加载进内存,逐块匹配提取你要的活动数据,下面给你具体的实操方案:

核心思路

Google的位置历史JSON结构里,activitySegment(或者你要的其他活动节点)都是独立的结构化块,我们可以用正则精准匹配这些块,再通过命令行工具流式扫描文件,全程不占太多内存。

步骤1:确定目标匹配规则

假设你要提取的是activitySegment相关的活动数据,先写一个能精准匹配这类块的正则:

"activitySegment":\{[^{}]*("activityType":"[^"]*"|[^{}])*\}

正则解释:

  • "activitySegment":\{:匹配活动块的起始标记
  • [^{}]*:匹配块内非大括号的内容
  • ("activityType":"[^"]*"|[^{}])*:确保捕获到activityType这类关键字段,同时兼容块内的其他内容(避免漏匹配)
  • \}:匹配块的结束标记

如果你的目标是其他活动节点(比如placeVisit),把开头的"activitySegment"换成对应的字段名就行。

步骤2:用命令行工具执行提取(无内存压力)

别用Notepad++这类GUI工具了,命令行工具天生适合流式处理大文件,不会崩溃:

Windows(PowerShell)

打开PowerShell,切换到JSON文件所在目录,执行:

Select-String -Path "YourLocationHistory.json" -Pattern '"activitySegment":\{[^{}]*("activityType":"[^"]*"|[^{}])*\}' -AllMatches | ForEach-Object { $_.Matches.Value } | Out-File "ExtractedActivities.json"

Linux/macOS(终端)

执行:

grep -o '"activitySegment":\{[^{}]*("activityType":"[^"]*"|[^{}])*\}' YourLocationHistory.json > ExtractedActivities.json

这些命令会逐行扫描你的大JSON文件,把匹配到的所有活动块提取出来,保存到ExtractedActivities.json里,全程内存占用极低。

步骤3:整理提取结果(可选)

提取出来的是一行行独立的JSON块,如果你需要合法的JSON数组,可以手动给文件开头加[,结尾加],然后在每个块之间加逗号(或者用简单的脚本批量处理),之后就能用普通的JSON工具打开分析了。

注意事项

  • 先拿一小段JSON测试你的正则,确保能正确匹配到目标内容再跑全量;
  • 如果活动块里有多层嵌套的大括号,可能需要调整正则(比如用递归匹配),但Google位置历史的activitySegment结构相对简单,上面的正则基本够用;
  • 要是你需要更复杂的过滤(比如只提取activityType为WALKING的记录),可以在正则里加条件,比如把"activityType":"[^"]*"换成"activityType":"WALKING"。

内容的提问来源于stack exchange,提问作者ashleedawg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 08:00:13