【发布时间】:2021-08-26 12:53:22
【问题描述】:
我遇到了一个非常烦人的问题,这是由于不可靠的 PDF 数字化造成的。
无论如何,理想情况下,一系列具有不同列的行应该这样表示:
Code Cost Quantity
ABC 45.00 4
FED 60.00 5
GHK 30.00 5
使用正则表达式很容易将它们分成行,然后获取每一列。
但是,我发现一个特别烦人的文字总是这样出现:
Code Cost Quantity
ABC FED GHK 45.00 60.00 30.00 4 5 5
我一生都无法弄清楚如何让正则表达式分离出每个重叠的行,就像在第一个示例中一样。积极的前瞻可以让我得到一些帮助,但通常会发生 ABC 45.00 4 然后 FED 45.00 4,我建立的前瞻不会遍历所有单独的列。
我怀疑我可以使用命名模式或其他东西,匹配第一组:
(?>(?<match1>((?>\s|\b)\w{3}\s).+\s+\s(\d+\.\d{2})\s.*\s+\s(\d{1})\s.*))
然后以某种方式重用该捕获组,对其进行迭代。
坚持积极的展望只会迭代第一组,所以我显然在做一些愚蠢的事情:
https://regex101.com/r/Uxx8bZ/1
理论上我可以用其他方式分隔行(例如,对于每个大空间,这是一列),但似乎这应该是可能的。
帮助表示赞赏!
【问题讨论】:
标签: regex multiple-columns rows overlapping-matches