我有一行文字,其中包含从pdf中提取的发票行。
我应该解析它,将行作为输出标记。
这是一个片段:
1 NR 0PR 18OV DHO1O154 OCCHIALE ACETATO DONNA VISTA 1 NR 0PR 18OV NAG1O152 OCCHIALE ACETATO DONNA VISTA 1 NR 0PR 61QV 7AX1O156 OCCHIALE METALLO UOMO VISTA Descrizione Causale Vendita 2 NR 0AN4007 41/87 66 OCCHIALE NYLON UOMO SOLE Descrizione Causale Vendita 1 NR 0EA4001 50638G56 Valeria OCCHIALE NYLON UOMO SOLE Descrizione Causale Vendita - Pag 1 di 3 - Segue - 1 NR 0PO3042S 972 / M351 Sofia OCCHIALE ACETATO UOMO SOLE Descrizione Causale Vendita 1 NR 0AN3048 502 / 8G30 Valeria OCCHIALE METALLO UOMO SOLE Descrizione Causale Vendita 6 NR 0DG4204 27648764 OCCHIALE ACETATO UOMO SOLE Descrizione Causale Vendita 1 NR 0OX3123 31230453 Valeria OCCHIALE ACCIAIO UOMO VISTA
作为代币,我想获得第一个:
1 NR 0PR 18OV DHO1O154 OCCHIALE ACETATO DONNA VISTA
解释,我的令牌应该是:
使用此正则表达式(\b\d+\b NR)
我可以匹配所有X + NR起始标记,如何在下一个X + NR标记之前选择下一部分?
注意标题!我只有一行,所以... 没有新的行分隔符!
谢谢
答案 0 :(得分:1)
在目前为止的正则表达式的基础上,你可以使用积极的前瞻:
(?:\b\d+\b NR).*?(?=\b\d+\b NR|$)
每种颜色表示不同的匹配。
(?= ... )
是一个积极的先行者,不算作比赛。因此,您可以在下一个\b\d\b NR
或字符串$
结束之前和之前获得匹配。
答案 1 :(得分:0)
@ Jerry的答案的简化版本:
\d NR(?:(?!\d NR).)*