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

Perl正则循环匹配:将HAR文件QueryString/Params转为HTTP查询串

正则替换实现方案

直接运行如下Perl命令即可完成HAR文件的指定字段转换,全程不会改动文件中其余JSON结构:

perl -0777 -i.bak -pe 's/"(QueryString|Params)":\[(?:\{"Name":"(.*?)",\s*"Value":"(.*?)"\},?\s*)*\]/
  $field = $1;
  @kv_pairs;
  pos($_) = $-[0];
  while (/\G.*?\{"Name":"(.*?)",\s*"Value":"(.*?)"\}/g) {
    push @kv_pairs, "$1=$2";
  }
  "\"$field\":\"" . join("&", @kv_pairs) . "\""
/ge' target.har

参数说明

  • -0777:将整个文件作为单个字符串读入,支持匹配跨行的JSON数组结构
  • -i.bak:原地修改文件前自动生成后缀为.bak的备份,避免操作失误损坏原文件,不需要备份直接改成-i即可
  • 正则替换使用/g修饰符全局匹配所有目标字段,/e修饰符将替换逻辑作为Perl代码动态执行
  • 匹配逻辑会自动覆盖两种场景:
    • 数组内存在多组Name/Value对时,按key=value格式拼接后用&连接为标准查询串
    • 匹配到空数组[]时,自动拼接为空字符串,符合转换要求

转换示例

输入非空字段:

"QueryString":[{"Name":"IsOrdered", "Value":"1"}, {"Name":"TimeStamp", "Value":"11654116426247"}]

输出结果:

"QueryString":"IsOrdered=1&TimeStamp=11654116426247"

输入空字段:

"QueryString":[]

输出结果:

"QueryString":""

提示:如果待处理的Name/Value中包含&、=、中文等特殊字符,可以在拼接键值对时对值做URI编码,避免生成的查询字符串格式错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:24:31