单行分隔的文本



我有一个包含发票行的单行文本,从pdf中提取。

我应该解析它,获取行作为输出标记。

下面是一个片段:

1 NR 0PR 18OV DHO1O154 OCCHIALE ACETATO DONNA VISTA 1 NR 0PR 18OV NAG1O152 奥基亚莱 阿塞塔托 唐娜维斯塔 1 NR 0PR 61QV 7AX1O156 奥基亚莱 METALLO UOMO VISTA Descrizione Causale Vendita 2 NR 0AN4007 41/87 66 奥基亚莱尼龙 UOMO 鞋底 Descrizione 考萨莱旺迪塔 1 NR 0EA4001 50638G56 缬草 奥基亚莱 尼龙 尤莫 鞋底 Descrizione 考萨莱·旺迪塔 - 第 1 页 di 3 - 塞格 - 1 NR 0PO3042S 972/M351 索非亚 奥基亚莱 阿西塔托 UOMO 鞋底 Descrizione 考萨莱·旺迪塔 1 NR 0AN3048 502/8G30 缬草 奥基亚莱金属 UOMO 鞋底 Descrizione 考萨莱旺迪塔 6 NR 0DG4204 27648764 奥基亚莱 醋酸 乌莫 鞋底 1 NR 0OX3123 31230453 瓦莱里娅·奥基亚莱 阿恰约·乌莫维斯塔

我想获取,作为令牌,例如第一个:

1 NR 0PR 18OV DHO1O154 奥基亚莱·阿塞塔托 唐娜·维斯塔

解释一下,我的令牌应该是:

  • 整数+*空格*+NR+空格开头
  • 包含我开始后能找到的任何内容,字符串,数字,等等......
  • 结束之前:下一个"X+NR"起始标记,固定字符串(如"Descrizione Causale Vendita"(或文件结尾。

使用此正则表达式(bd+b NR)我可以匹配所有 X+NR 起始令牌,如何在下一个 X+NR 令牌之前选择下一部分?

注意标题!我都在一行中,所以...没有新的行分隔符

谢谢

基于您目前拥有的正则表达式,您可以使用积极的展望:

(?:bd+b NR).*?(?=bd+b NR|$)

正则表达式101演示

每种颜色表示不同的匹配。

(?= ... )是一个积极的展望,不算匹配。因此,您会在字符串$的下一个bdb NR或结束之前和之前获得匹配项。

@Jerry答案的简化版本:

d NR(?:(?!d NR).)*

最新更新