我正在从包含超过三行或更多行的感兴趣信息的文件中提取记录。信息是按顺序排列的,它遵循合理的模式,但中间可以有一些样板文本。
由于这是一个从 PDF 转换而来的文本文件,因此中间也可能有页码或其他一些简单的控制元素。
模式包括: 起始行:姓和名以逗号分隔,没有其他内容
下一行将有两个长数字(>=7 位),后跟两个日期
最后一行感兴趣的将有 4 位数字,后跟一个日期
感兴趣的模式以粗体标记):
姓,名 ...什么都没有,或者可能是一些垃圾文本 999999999 9999999 MM/DD/YY MM/DD/YY 垃圾短信 ...什么都没有,或者可能是一些垃圾文本 9999 MM/DD/YY 垃圾 我不在乎
默认情况下,我的目标文本如下所示:
一些不相关的文字 DOE ,JOHN 200000002 100000070 04/04/13 12/12/12 XYZ IJK ABC 某事0999 12/22/12 0 1 0其他 更多的东西
但可能会在两者之间遇到一些事情,所以它看起来像:
一些不相关的文字 DOE,约翰 第 13 页页眉 200000002 100000070 04/04/13 12/12/12 XYZ IJK ABC 某事0999 12/22/12 0 1 0其他事 更多的东西
我真的不需要在这里验证太多,所以我用下面的正则表达式捕捉了三行。
因为我知道这种模式将作为子字符串出现,但可能会插入
到目前为止,我一直在使用以下三个 reg 来捕捉这些元素。表达式:
(([A-Z]+\s+)+,[A-Z]+)
(\d{7,}\s+\d{7,}\s+(\d{2}/\d{2}/\d{2}\s+){2})
(\d{4}\s+\d{2}/\d{2}/\d{2})
但我想提取感兴趣的全部数据。
这可能吗?如果可以,怎么做?