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

基于正则表达式提取日志中API交易及用户状态数据求助

我帮你修正了正则表达式,解决了行间距适配问题,同时能完整提取你需要的两类结构化数据——交易级汇总信息和所属全量用户明细。下面是具体方案:

修正后的正则(交易级数据+用户块捕获)

(?sm)^(\w+)\t(\w+)\t(\d+)\t(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\t(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2})\t(\d+)(?:\s*)(.*?)(?=\n\w+\t\w+\t|\Z)

正则逻辑拆解

  • (?sm):启用多行模式(让^/$匹配每行首尾)和单行模式(让.匹配换行符,方便跨多行捕获用户块)
  • 交易头捕获组:^(\w+)\t(\w+)\t(\d+)\t(时间1)\t(时间2)\t(\d+) 精准抓取API码、NAT码、数值、起止时间、队列数
  • (?:\s*):匹配交易头后的任意空白(包括空行、多换行的行间距),彻底解决行间距问题
  • (.*?):非贪婪匹配所有用户行内容,避免过度匹配到下一个交易
  • (?=\n\w+\t\w+\t|\Z):正向预查终止条件,确保在遇到下一个交易头(\nAPI码\tNAT码\t)或文本末尾时停止匹配

用户明细数据提取正则

拿到每个交易的用户块后,用下面的正则逐行匹配用户信息:

^(\w+)\t([^\t]+)\t(\w+)\t(\d+)\t(\d+\.\d+)%?$

用户正则逻辑

  • ^(\w+):捕获用户对应的API码
  • ([^\t]+):捕获用户名(支持含特殊字符的用户名,只要不包含制表符)
  • (\w+):捕获状态(如success/fail)
  • (\d+):捕获用户数据数值
  • (\d+\.\d+)%?$:捕获有效率(兼容带%和不带%的格式)

使用流程

  1. 用第一个正则遍历所有交易,提取每个交易的汇总信息(前6个捕获组)和用户块(第7个捕获组)
  2. 对每个用户块,用第二个正则逐行匹配,提取每一位用户的明细数据

这样就能完美解决原正则的行间距问题,同时覆盖全量用户数据的提取需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:40:51