正则表达式未捕获所需数据

Regex Expression Not Capturing Wanted Data

目标:尝试仅捕获 Invoice # 列值。我的目标是使用发票号右侧的日期来捕获左侧的发票号。

问题:我们正在处理的字符串格式已将最后一行详细信息汇总到它之前的行。参见 DM20052921 我无法使用正则表达式抓取 (DM20052921) 并且在底部和顶部出现不需要的行?

我的正则表达式:([A-Z\d]+).+(?= 20\d{2}-)

示例文本:

2020-06-02 PURITY LIFE HEALTH PRODUCTS LP 第 1 页 A/P 汇款通知直接存款 2020-06-02

支票#10215 供应商#0600 HAIN CELESTIAL CANADA, ULC

发票# 日期描述总光盘净额============================ ================================================ =====

220339 2020-04-24 P2152762 2,569.44 .00 2,569.44

221887 2020-04-29 P2153903 1,655.68 .00 1,655.68

221967 2020-04-29 P2153899 3,210.68 .00 3,210.68

222055 2020-04-29 P2153904 1,574.09 .00 1,574.09

CR01BBN0 2020-05-18 多 MCBS 86.65-.00 86.65-

CR01BBWG 2020-05-25 多 MCBS 98.02-.00 98.02-

CR01BB4I 2020-06-01 多 MCBS 60.37-.00 60.37-

DM20051917 2020-05-13 库存注销 1.44- .00 1.44- DM20052921 2020-05-21

库存注销 23.96- .00 23.96- ==================================== ====== 8,739.45 .00 8,739.45

2020 年 6 月 2 日印刷于 13:4

试试这个正则表达式

([A-Z\d]+)(?=\s\d{4}-\d{2}-\d{2})

找到这些东西

2020-06-02 PURITY LIFE HEALTH PRODUCTS LP 第 1 页 A/P 汇款通知直接存款 2020-06-02

支票#10215 供应商#0600 HAIN CELESTIAL CANADA, ULC

发票#日期描述总光盘净额====================================== =============================================

220339 2020-04-24 P2152762 2,569.44 .00 2,569.44

221887 2020-04-29 P2153903 1,655.68 .00 1,655.68

221967 2020-04-29 P2153899 3,210.68 .00 3,210.68

222055 2020-04-29 P2153904 1,574.09 .00 1,574.09

CR01BBN0 2020-05-18 多 MCBS 86.65-.00 86.65-

CR01BBWG 2020-05-25 多 MCBS 98.02- .00 98.02-

CR01BB4I 2020-06-01 多 MCBS 60.37-.00 60.37-

DM20051917 2020-05-13 库存注销 1.44- .00 1.44- DM20052921 2020-05-21

库存注销 23.96- .00 23.96- ==================================== ====== 8,739.45 .00 8,739.45

2020 年 6 月 2 日印刷于 13:4

在我看来你想多了...

/([A-Z\d]+)\s\d{4}/              // This works for your example
/([A-Z\d]+)\s\d{4}-\d{2}-\d{2}/  // This double checks it's followed by a date