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

正则表达式解析交易文本:按需包含D:描述信息的问题

正则解析交易记录问题解决指南

问题原因

你遇到的多交易合并问题,核心是正则未明确匹配边界:当交易不含D:描述时,正则无法判断当前交易的结束位置,只能持续向后匹配直到找到下一个D:或文本末尾,最终把多个独立交易合并成了一个大匹配结果。本质是正则使用了贪婪匹配逻辑,且未设置有效的交易终止条件。

修正方案

解决关键是给正则加上明确的交易终止边界,确保每个交易匹配到下一个交易的起始标识就停止。假设你的交易记录结构为[交易类型] (标的代码) 金额 [可选D:描述],可以使用以下正则:

\[ST|OP\] \((META|MSFT)\) \d+(?:\.\d+)?(?:\s+D:\s*.+?(?=\s*(?:\[ST|OP\]|\Z)))?

核心逻辑说明:

  • (?=\s*(?:\[ST|OP\]|\Z)):正向预查规则,匹配到下一个交易类型([ST]/[OP])或者文本结尾就停止,强制截断当前交易的匹配范围
  • (?:\s+D:\s*.+?(?=...))?:用非捕获组加问号实现D:描述的可选匹配,且仅匹配到下一个交易开始前的内容
  • 全程使用非贪婪匹配(+?),避免过度匹配无关内容

PDF解析适配优化

针对PDF解析中可能出现的D与冒号不连续(比如D : 交易说明、D : 备注)的情况,只需把正则中的D:替换为D\s*:,允许两者之间存在任意空格:

\[ST|OP\] \((META|MSFT)\) \d+(?:\.\d+)?(?:\s+D\s*:\s*.+?(?=\s*(?:\[ST|OP\]|\Z)))?

这样不管D和冒号之间有多少空格,都能正确识别描述信息,同时依然保证每个交易的独立匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 19:22:35