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

如何限定正则仅提取RID: RSS-130及ACQT后对应记录的指定内容?

正则限定RID范围提取指定节点下内容方案

核心思路

先锁定RID: RSS-130的专属记录块,再在块内匹配ACQT节点后的目标字段,通过非贪婪匹配限制范围,避免跨记录匹配。

适配后正则规则

需要搭配单行匹配模式(让.可匹配换行符)使用:

RID:\s+RSS-130.*?PROC DATE:\s*(\w+).*?ACQT.*?T PUR\s*([0-9,]+)\s*([0-9,]+)

规则说明

  • 开头RID:\s+RSS-130:限定仅匹配目标RID的记录
  • .*?:非贪婪匹配任意字符,确保匹配范围不会超出当前记录块,不会命中后续其他RID的内容
  • 中间加入ACQT关键字校验:确保只提取ACQT节点之后出现的T PUR数值
  • 三个捕获组分别对应目标内容:PROC DATE后的日期值、T PUR行第一个数值、T PUR行第二个数值

Python实现示例

import re

# 读取目标文本文件
with open("你的结构化文件路径.txt", "r", encoding="utf-8") as f:
    text_content = f.read()

# 编译正则,开启re.S(单行匹配模式)
extract_pattern = re.compile(
    r"RID:\s+RSS-130.*?PROC DATE:\s*(\w+).*?ACQT.*?T PUR\s*([0-9,]+)\s*([0-9,]+)",
    flags=re.S
)

# 提取结果并格式化
result = extract_pattern.findall(text_content)
format_result = [f"({';'.join(item)})" for item in result]

# 输出结果:[(15SEP21;120;12,263,518)]
print(format_result)

优化可选方案

如果你的文件里单条RID记录的结束标识是固定的(比如下一个RID:开头),也可以在正则末尾加前瞻断言进一步缩小匹配范围,避免极端场景下的跨记录匹配:

RID:\s+RSS-130.*?PROC DATE:\s*(\w+).*?ACQT.*?T PUR\s*([0-9,]+)\s*([0-9,]+).*?(?=\nRID:|\Z)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 04:15:01