如何使这个正则表达式工作?

时间:2015-10-19 21:43:30

标签: regex

我正在尝试匹配PDF文档中的数据集。因为这个PDF是从OCR和PDF生成的,所以通常不会以程序可以轻松获取的方式排列数据,所以我收到的数据看起来像这样:

  

12/26更正卡结束于1111 427.85 3,611.31一些大道名称12/26 OFF-US ATM提取803.00 2,808.31 OAKBROOK SQUARE OFFICE PALM BCH GDNSFLUS 12/26 ATM取款419.46 2,388.85一些大道名称12/26服务费8.39 2,380.46外国交易费用12/29 OFF-US ATM取款802.50 1,577.96 THE BREAKERS PALM BCH PALM BEACH FLUS 12/30 ATM取款600.00 977.96 11111 US HWY 1,PALM BEACH,FL 12/31 ACH DEBIT 207.94 770.02 PAYBYPHONE-PYMT PHONE PYMT 1111 Dec 31 12 / 31 ACH DEBIT 138.00 632.02 BK OF AM CRD ACH PAYBYPHONE 01111111 12月31日

我正在尝试从那里提取日期,标题,两个数值,然后是可能存在或可能不存在的注释,希望用空格分隔,可能存在也可能不存在。所以我用正则表达式走了这么远:

/(\d{1,2}\/\d{1,2})\s*(.+?)\s*([\d,]+\.\d\d)\s*([\d,]+\.\d\d-?)\s*(.*?)/g

这就是实例:https://regex101.com/r/yU2bN7/1

问题是,除了评论之外,它匹配应有的一切。最后一个懒惰(.*?)没有匹配,如果我贪婪,它将匹配其他数据集,就好像它们是第一个匹配的一部分。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:3)

为字符串结尾或下一个模式添加正向前瞻:

(?=$|\d{1,2}\/\d{1,2})