如何使用正则表达式动态提取文本前的数字?



我有一个正则表达式函数,可以在文本之前提取数字。但是我现在使用硬编码文本。

但是,无论文本如何,也可以提取数字。

所以我有这个示例字符串:

text = "[' nna)nn nnFactuurnVerdi Import SchoolfruitnFactuur nr. : 71201 Koopliedenweg 33nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 10-12-21nAantal Omschrijving Prijs BedragnOrder number : 77553 Loading date : 09-12-21 Incoterm: : FOTnYour ref. : SCHOOLFRUIT Delivery date :nWK50nD.C. Schoolfruitn16 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 123,20n360 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 2.772,00n6 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,/0 € 46,20n75  Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 577,50n9 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 69,30n688 Appels Royal Gala 13kg 60/65 Generica PL I € 5,07 € 3.488,16n22  Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 137,50n80 Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 500,00n160 Sinaasappels Valencias 15kg 105 FVC ZAI € 6,25 € 1.000,00n320 Sinaasappels Valencias 15kg 105 Generica ZAI € 6,25 € 2.000,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 1.000,00n61  Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 381,25nTotaal Colli Totaal Netto Btw Btw Bedrag Totaal Bedragn€ 12.095,11 1.088,56nBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnVerDi Import BV ING Bank NV. Rotterdam IBAN number: NL17INGB0006959173 ~~nn nnKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 inTel, +31 (0}1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no. 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnrut ard wegetablesnx0c']"

我有这个作为搜索词:

fruit_words = ['Appels', 'Ananas', 'Peen Waspeen',
'Tomaten Cherry', 'Sinaasappels',
'Watermeloenen', 'Rettich']

这是正则表达式:

regex =  r"(d*(?:.d+)*)s*(?:" + '|'.join(re.escape(word)
for word in fruit_words) + ')'
number_found = re.findall(regex, verdi3)
print(number_found)

然后输出是这样的:

['16', '360', '6', '75', '9', '688', '22', '80', '160', '320', '160', '61']

我的问题: 是否也可以具有相同的输出,但没有fruit_words?

还是没有正则表达式的马拜?

谢谢

问题是。如果我有这个字符串。其他事实。但结构相同。

text2 = "['A)nnFactuurnnFactuur nr.nDeb. nr.nYour VAT nr.nnFactuur datumnn72459nn108636nNL851703884B01n11-01-22nnAantal OmschrijvingnnOrder numbernnYour ref,nnD.C. Schoolfruitnn79005 Loading datenSCHOOLFRUIT Delivery datenWKO2nn782 Peen Breek peen 10xikg B Rabbit NLIn138 Mandarijnen Clementinas 10kg 3-140 Black MAIn450 Mandarijnen Clementinas 10kg 3-140 Black MAIn486 Sinaasappels Navels 15kg 6-90 Gloriosa MAInn60 Sinaasappels Navels 15kg 6-90 Gloriosa MA InnVerDinVerDinVerDinnTotaal Collinn1.916nnVerDi Import BVnnKoopliedenweg 38, 2991 LN Barendrecht, The NetherlandsnTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25nE-mail: sales@verdiimport.nl, www.verdiimport.nlnnMidden Zuid NoordnMandarijn 195 158 235nWortel 202 164 416nSinaas 302 244 0nnTotaal Nettonn€ 12.474,40nnVerdi Import SchoolfruitnKoopliedenweg 38n2991 LN BARENDRECHTnnNederlandnPrijsnn10-01-22 Incoterm: : FOTn€ 4,70n€ 8,00n€ 8,00n€ 7,50n€ 7,50nn588nn782nn546nnBtw Btw BedragnnBedragnn€ 3.675,40n€ 1.104,00n€  3.600,00n€ 3.645,00n€ 450,00nnTotaal Bedragnn€ 1.122,70 € 13.597,10nn nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173nnSWIFT/BIC: INGBNL2A, VAT number: NL851703884B01nChamber of Commerce Rotterdam no, 55424309nDutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnSas?nVerDinnfruit and vegetablesnx0c']"

然后输出是这样的:

['72459', '108636', '11-01-22', '79005', '782', '138', '450', '486', '60', '1.916', '2991', '10-01-22', '588', '782', '546']

当然有什么错。因为我只想要水果排序前的数字,所以例如:

522 Sinaasappels Navelinas 15kg 

不包括带 . 的数字。就像这个字符串一样:

text3 = '["a(S (>)nn nn  n nn nn nn   nnFactuurnVerdi Import SchoolfruitnFactuur nr. + 71257 Koopliedenweg 38nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 13-12-21nAantal Omschrijving Prijs BedragnOrdernumber : 76929 Loading date : 29-11-21 Incoterm: : FOTnYour ref, : Delivery date :nD.C. Schoolfruitn705 Appels Royal Gala 13kq 60/65 Generica PL I € 4,68 € 3.299,40nOrder number : 76643 Loading date : 25-11-21 Incoterm: : FRAnYour ref. : Delivery datenD.C, Schoolfruitn1.712 Tomaten Cherry pruim 4kg Los Cherie MA I € 2,25 € 3.852,00n80 Sinaasappels Midnights 15kg 105 BIG 5 ZAI € 6,50 € 520,00n240 Sinaasappels Midnights 15kg 105 Noordhoek ZAI € 6,50 € 1.560,00n8 Sinaasappels Valencias 15kg 105 Limpopo ZAI € 6,50 € 52,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 1.040,00n320 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 2.080,00nSINAAS:nMIDDEN 267 pcmnNOORD 325 2%; oenZUID 216 PARTUNUMMERnTOTAAL: 808 | DATUN Bi r|nCHERRY:nMIDDEN 564nNOORD 693nZUID 455nTOTAAL: 1712 eenBETALINGnTotaal Colli Totaal Bedragnn    n n nn€ 13.519,71nn n nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnails,nVerDi Import BV ING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173 —nKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 anTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no, 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction,nnfret and vegetan"]'

我用这段文字尝试一下:

verdi48 = '["a(S (>)nn nn  n nn nn nn   nnFactuurnVerdi Import SchoolfruitnFactuur nr. + 71257 Koopliedenweg 38nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 13-12-21nAantal Omschrijving Prijs BedragnOrdernumber : 76929 Loading date : 29-11-21 Incoterm: : FOTnYour ref, : Delivery date :nD.C. Schoolfruitn705 Appels Royal Gala 13kq 60/65 Generica PL I € 4,68 € 3.299,40nOrder number : 76643 Loading date : 25-11-21 Incoterm: : FRAnYour ref. : Delivery datenD.C, Schoolfruitn1.712 Tomaten Cherry pruim 4kg Los Cherie MA I € 2,25 € 3.852,00n80 Sinaasappels Midnights 15kg 105 BIG 5 ZAI € 6,50 € 520,00n240 Sinaasappels Midnights 15kg 105 Noordhoek ZAI € 6,50 € 1.560,00n8 Sinaasappels Valencias 15kg 105 Limpopo ZAI € 6,50 € 52,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 1.040,00n320 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 2.080,00nSINAAS:nMIDDEN 267 pcmnNOORD 325 2%; oenZUID 216 PARTUNUMMERnTOTAAL: 808 | DATUN Bi r|nCHERRY:nMIDDEN 564nNOORD 693nZUID 455nTOTAAL: 1712 eenBETALINGnTotaal Colli Totaal Bedragnn    n n nn€ 13.519,71nn n nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnails,nVerDi Import BV ING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173 —nKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 anTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no, 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction,nnfret and vegetan"]'

但这行不通。

我得到100次没有匹配。

这是字符串:

text4 = '["a(S (>)nn nn  n nn nn nn   nnFactuurnVerdi Import SchoolfruitnFactuur nr. + 71257 Koopliedenweg 38nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 13-12-21nAantal Omschrijving Prijs BedragnOrdernumber : 76929 Loading date : 29-11-21 Incoterm: : FOTnYour ref, : Delivery date :nD.C. Schoolfruitn705 Appels Royal Gala 13kq 60/65 Generica PL I € 4,68 € 3.299,40nOrder number : 76643 Loading date : 25-11-21 Incoterm: : FRAnYour ref. : Delivery datenD.C, Schoolfruitn1.712 Tomaten Cherry pruim 4kg Los Cherie MA I € 2,25 € 3.852,00n80 Sinaasappels Midnights 15kg 105 BIG 5 ZAI € 6,50 € 520,00n240 Sinaasappels Midnights 15kg 105 Noordhoek ZAI € 6,50 € 1.560,00n8 Sinaasappels Valencias 15kg 105 Limpopo ZAI € 6,50 € 52,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 1.040,00n320 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 2.080,00nSINAAS:nMIDDEN 267 pcmnNOORD 325 2%; oenZUID 216 PARTUNUMMERnTOTAAL: 808 | DATUN Bi r|nCHERRY:nMIDDEN 564nNOORD 693nZUID 455nTOTAAL: 1712 eenBETALINGnTotaal Colli Totaal Bedragnn    n n nn€ 13.519,71nn n nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnails,nVerDi Import BV ING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173 —nKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 anTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no, 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction,nnfret and vegetan"]'

然后它打印这个:

['705', '80', '240', '8', '160', '320']

它缺少数字:1.712

如果我有这个字符串:

verdi2 = "['A)nnFactuurnnFactuur nr.nDeb. nr.nYour VAT nr.nnFactuur datumnn72459nn108636nNL851703884B01n11-01-22nnAantal OmschrijvingnnOrder numbernnYour ref,nnD.C. Schoolfruitnn79005 Loading datenSCHOOLFRUIT Delivery datenWKO2nn782 Peen Breek peen 10xikg B Rabbit NLIn138 Mandarijnen Clementinas 10kg 3-140 Black MAIn450 Mandarijnen Clementinas 10kg 3-140 Black MAIn486 Sinaasappels Navels 15kg 6-90 Gloriosa MAInn60 Sinaasappels Navels 15kg 6-90 Gloriosa MA InnVerDinVerDinVerDinnTotaal Collinn1.916nnVerDi Import BVnnKoopliedenweg 38, 2991 LN Barendrecht, The NetherlandsnTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25nE-mail: sales@verdiimport.nl, www.verdiimport.nlnnMidden Zuid NoordnMandarijn 195 158 235nWortel 202 164 416nSinaas 302 244 0nnTotaal Nettonn€ 12.474,40nnVerdi Import SchoolfruitnKoopliedenweg 38n2991 LN BARENDRECHTnnNederlandnPrijsnn10-01-22 Incoterm: : FOTn€ 4,70n€ 8,00n€ 8,00n€ 7,50n€ 7,50nn588nn782nn546nnBtw Btw BedragnnBedragnn€ 3.675,40n€ 1.104,00n€  3.600,00n€ 3.645,00n€ 450,00nnTotaal Bedragnn€ 1.122,70 € 13.597,10nn nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173nnSWIFT/BIC: INGBNL2A, VAT number: NL851703884B01nChamber of Commerce Rotterdam no, 55424309nDutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnSas?nVerDinnfruit and vegetablesnx0c']"

然后,它还重新调整事实数字。什么不必。

只有双节棍后带水果的数字才需要返回。所以与欧元的线。

一种没有正则表达式的方法。首先,我们将文本按n,因为我们需要的所有数字都以新行开头。然后我们丢弃那些不以数字开头的元素。接下来,我们用空格切割剩余的元素并得到数字。

text = "[' nna)nn nnFactuurnVerdi Import SchoolfruitnFactuur nr. : 71201 Koopliedenweg 33nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 10-12-21nAantal Omschrijving Prijs BedragnOrder number : 77553 Loading date : 09-12-21 Incoterm: : FOTnYour ref. : SCHOOLFRUIT Delivery date :nWK50nD.C. Schoolfruitn16 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 123,20n360 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 2.772,00n6 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,/0 € 46,20n75  Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 577,50n9 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 69,30n688 Appels Royal Gala 13kg 60/65 Generica PL I € 5,07 € 3.488,16n22  Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 137,50n80 Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 500,00n160 Sinaasappels Valencias 15kg 105 FVC ZAI € 6,25 € 1.000,00n320 Sinaasappels Valencias 15kg 105 Generica ZAI € 6,25 € 2.000,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 1.000,00n61  Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 381,25nTotaal Colli Totaal Netto Btw Btw Bedrag Totaal Bedragn€ 12.095,11 1.088,56nBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnVerDi Import BV ING Bank NV. Rotterdam IBAN number: NL17INGB0006959173 ~~nn nnKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 inTel, +31 (0}1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no. 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnrut ard wegetablesnx0c']"
a = text.split('n')
b = list(filter(lambda x: x[0].isdigit() if len(x) > 0 else False, a))
c = [x.split()[0] for x in b if x.split()[0].isdigit()]
print(c)
['16', '360', '6', '75', '9', '688', '22', '80', '160', '320', '160', '61']

您可以使用(?si)SCHOOLFRUIT(?:(?!SCHOOLFRUIT).)*?Totaal Colli提取SCHOOLFRUIT Delivery dateTotaal Colli之间的所有文本块(请参阅此正则表达式),然后使用(?m)^d+提取每行开头的所有数字(其中^匹配任何行起始位置,d+(?:.d+)?匹配一个或多个数字,然后是.和一个或多个数字的可选序列, 即匹配整数或浮点数)。

请参阅此 Python 演示:

import re
texts = [
"[' nna)nn nnFactuurnVerdi Import SchoolfruitnFactuur nr. : 71201 Koopliedenweg 33nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 10-12-21nAantal Omschrijving Prijs BedragnOrder number : 77553 Loading date : 09-12-21 Incoterm: : FOTnYour ref. : SCHOOLFRUIT Delivery date :nWK50nD.C. Schoolfruitn16 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 123,20n360 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 2.772,00n6 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,/0 € 46,20n75  Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 577,50n9 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 69,30n688 Appels Royal Gala 13kg 60/65 Generica PL I € 5,07 € 3.488,16n22  Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 137,50n80 Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 500,00n160 Sinaasappels Valencias 15kg 105 FVC ZAI € 6,25 € 1.000,00n320 Sinaasappels Valencias 15kg 105 Generica ZAI € 6,25 € 2.000,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 1.000,00n61  Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 381,25nTotaal Colli Totaal Netto Btw Btw Bedrag Totaal Bedragn€ 12.095,11 1.088,56nBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnVerDi Import BV ING Bank NV. Rotterdam IBAN number: NL17INGB0006959173 ~~nn nnKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 inTel, +31 (0}1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no. 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnrut ard wegetablesnx0c']",
"['A)nnFactuurnnFactuur nr.nDeb. nr.nYour VAT nr.nnFactuur datumnn72459nn108636nNL851703884B01n11-01-22nnAantal OmschrijvingnnOrder numbernnYour ref,nnD.C. Schoolfruitnn79005 Loading datenSCHOOLFRUIT Delivery datenWKO2nn782 Peen Breek peen 10xikg B Rabbit NLIn138 Mandarijnen Clementinas 10kg 3-140 Black MAIn450 Mandarijnen Clementinas 10kg 3-140 Black MAIn486 Sinaasappels Navels 15kg 6-90 Gloriosa MAInn60 Sinaasappels Navels 15kg 6-90 Gloriosa MA InnVerDinVerDinVerDinnTotaal Collinn1.916nnVerDi Import BVnnKoopliedenweg 38, 2991 LN Barendrecht, The NetherlandsnTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25nE-mail: sales@verdiimport.nl, www.verdiimport.nlnnMidden Zuid NoordnMandarijn 195 158 235nWortel 202 164 416nSinaas 302 244 0nnTotaal Nettonn€ 12.474,40nnVerdi Import SchoolfruitnKoopliedenweg 38n2991 LN BARENDRECHTnnNederlandnPrijsnn10-01-22 Incoterm: : FOTn€ 4,70n€ 8,00n€ 8,00n€ 7,50n€ 7,50nn588nn782nn546nnBtw Btw BedragnnBedragnn€ 3.675,40n€ 1.104,00n€  3.600,00n€ 3.645,00n€ 450,00nnTotaal Bedragnn€ 1.122,70 € 13.597,10nn nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173nnSWIFT/BIC: INGBNL2A, VAT number: NL851703884B01nChamber of Commerce Rotterdam no, 55424309nDutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnSas?nVerDinnfruit and vegetablesnx0c']",
'["a(S (>)nn nn  n nn nn nn   nnFactuurnVerdi Import SchoolfruitnFactuur nr. + 71257 Koopliedenweg 38nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 13-12-21nAantal Omschrijving Prijs BedragnOrdernumber : 76929 Loading date : 29-11-21 Incoterm: : FOTnYour ref, : Delivery date :nD.C. Schoolfruitn705 Appels Royal Gala 13kq 60/65 Generica PL I € 4,68 € 3.299,40nOrder number : 76643 Loading date : 25-11-21 Incoterm: : FRAnYour ref. : Delivery datenD.C, Schoolfruitn1.712 Tomaten Cherry pruim 4kg Los Cherie MA I € 2,25 € 3.852,00n80 Sinaasappels Midnights 15kg 105 BIG 5 ZAI € 6,50 € 520,00n240 Sinaasappels Midnights 15kg 105 Noordhoek ZAI € 6,50 € 1.560,00n8 Sinaasappels Valencias 15kg 105 Limpopo ZAI € 6,50 € 52,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 1.040,00n320 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 2.080,00nSINAAS:nMIDDEN 267 pcmnNOORD 325 2%; oenZUID 216 PARTUNUMMERnTOTAAL: 808 | DATUN Bi r|nCHERRY:nMIDDEN 564nNOORD 693nZUID 455nTOTAAL: 1712 eenBETALINGnTotaal Colli Totaal Bedragnn    n n nn€ 13.519,71nn n nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnails,nVerDi Import BV ING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173 —nKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 anTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no, 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction,nnfret and vegetan"]',
'["a(S (>)nn nn  n nn nn nn   nnFactuurnVerdi Import SchoolfruitnFactuur nr. + 71257 Koopliedenweg 38nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 13-12-21nAantal Omschrijving Prijs BedragnOrdernumber : 76929 Loading date : 29-11-21 Incoterm: : FOTnYour ref, : Delivery date :nD.C. Schoolfruitn705 Appels Royal Gala 13kq 60/65 Generica PL I € 4,68 € 3.299,40nOrder number : 76643 Loading date : 25-11-21 Incoterm: : FRAnYour ref. : Delivery datenD.C, Schoolfruitn1.712 Tomaten Cherry pruim 4kg Los Cherie MA I € 2,25 € 3.852,00n80 Sinaasappels Midnights 15kg 105 BIG 5 ZAI € 6,50 € 520,00n240 Sinaasappels Midnights 15kg 105 Noordhoek ZAI € 6,50 € 1.560,00n8 Sinaasappels Valencias 15kg 105 Limpopo ZAI € 6,50 € 52,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 1.040,00n320 Sinaasappels Valencias 15kg 105 Noordhoek ZAI € 6,50 € 2.080,00nSINAAS:nMIDDEN 267 pcmnNOORD 325 2%; oenZUID 216 PARTUNUMMERnTOTAAL: 808 | DATUN Bi r|nCHERRY:nMIDDEN 564nNOORD 693nZUID 455nTOTAAL: 1712 eenBETALINGnTotaal Colli Totaal Bedragnn    n n nn€ 13.519,71nn n nnBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnnails,nVerDi Import BV ING Bank N.V. Rotterdam IBAN number: NL17INGB0006959173 —nKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 anTel. +31 (0)1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no, 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction,nnfret and vegetan"]'
]
for text in texts:
blocks = re.search(r'SCHOOLFRUIT(?:(?!SCHOOLFRUIT).)*?Totaal Colli', text, re.S|re.I)
if blocks:
number_found = re.findall(r'^d+(?:.d+)?', blocks.group(), re.M)
print(number_found)
else:
print("No matches!")
['16', '360', '6', '75', '9', '688', '22', '80', '160', '320', '160', '61']
['782', '138', '450', '486', '60']
['1.712', '80', '240', '8', '160', '320']
['1.712', '80', '240', '8', '160', '320']

正则表达式解释

  • (?si)SCHOOLFRUIT(?:(?!SCHOOLFRUIT).)*?Totaal Colli
    • (?si)-re.Ire.S标志处于打开状态(i=re.I使搜索不区分大小写,s=re.S使.匹配换行符)
    • SCHOOLFRUIT- 文字文本
    • (?:(?!SCHOOLFRUIT).)*?- 一个字符,零个或更多,但尽可能少出现,不会启动SCHOOLFRUIT字符序列
    • Totaal Colli- 文字文本
  • (?m)^d+(?:.d+)?
    • (?m)=re.M-^锚点现在匹配任何行的开头,而不仅仅是字符串的起始位置
    • ^- 行首
    • d+- 一个或多个数字
    • (?:.d+)?- 匹配.和一个或多个数字的可选非捕获组。

不再需要删除正则表达式

text = "[' nna)nn nnFactuurnVerdi Import SchoolfruitnFactuur nr. : 71201 Koopliedenweg 33nDeb. nr. : 108636 2991 LN BARENDRECHTnYour VAT nr. : NL851703884B01 NederlandnFactuur datum : 10-12-21nAantal Omschrijving Prijs BedragnOrder number : 77553 Loading date : 09-12-21 Incoterm: : FOTnYour ref. : SCHOOLFRUIT Delivery date :nWK50nD.C. Schoolfruitn16 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 123,20n360 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 2.772,00n6 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,/0 € 46,20n75  Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 577,50n9 Watermeloenen Quetzali 16kg 4 IMPERIAL BR I € 7,70 € 69,30n688 Appels Royal Gala 13kg 60/65 Generica PL I € 5,07 € 3.488,16n22  Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 137,50n80 Sinaasappels Valencias 15kg 105 Elara ZAI € 6,25 € 500,00n160 Sinaasappels Valencias 15kg 105 FVC ZAI € 6,25 € 1.000,00n320 Sinaasappels Valencias 15kg 105 Generica ZAI € 6,25 € 2.000,00n160 Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 1.000,00n61  Sinaasappels Valencias 15kg 105 Noordhoek ZA I € 6,25 € 381,25nTotaal Colli Totaal Netto Btw Btw Bedrag Totaal Bedragn€ 12.095,11 1.088,56nBetaling binnen 30 dagennAchterstand wordt gemeld bij de kredietverzekeringsmaatschappijnVerDi Import BV ING Bank NV. Rotterdam IBAN number: NL17INGB0006959173 ~~nn nnKoopliedenweg 38, 2991 LN Barendrecht, The Netherlands SWIFT/BIC: INGBNL2A, VAT number: NL851703884B01 inTel, +31 (0}1 80 61 88 11, Fax +31 (0)1 8061 88 25 Chamber of Commerce Rotterdam no. 55424309 VerDinnE-mail: sales@verdiimport.nl, www.verdiimport.nl Dutch law shall apply. The Rotterdam District Court shall have exclusive jurisdiction.nnrut ard wegetablesnx0c']"

您的输入看起来像发票,并且大多数发票在列出项目之前都有开始和结束。 在这种情况下[不确定,如果我能再得到一个样本,可以回答得更好]"华盛顿学校水果"将是开始,"Totaal"将是结束。用""拆分后放入循环,并在开始到结束之后获取行,应该会为您提供发票中所有项目的列表。希望这有帮助。

相关内容

  • 没有找到相关文章

最新更新