Permalänk
Medlem

En fråga om regex och python

Jag har gjort ett program i python där jag med regex ska plocka ut varor samt summor ifrån en faktura. Jag vill plocka ut de första fyra raderna på varje produkt, alltså från ROY01 till 1,10. Sista summan är inte så viktig. Varje produkt är formaterad såhär i texten:

ROY01 Royco Ayam 230 gr (24) 24,00 1,10 26,40

såhär ser python koden ut:

import re pattern = re.compile(r'\w{5+\d+,\d+\n\s+\d+,\d+}\n.+\n\s') x = re.search(pattern, fakturatext)

Problemet är att jag får inte med summorna efter varubeskrivningen, alltså 24,00 och 1,10. Någon som vet vad problemet är?

Permalänk
Medlem

Du kan använda dig av verktyg för att underlätta testandet av din regex, e.g. https://regex101.com

Här har du en regex du kan använda dig av: https://regex101.com/r/Rycvd8/1

Permalänk
Medlem
Skrivet av Tallrot:

\w{5+\d+,\d+\n\s+\d+,\d+}\n.+\n\s)

Denna regex är för mig helt obegriplig. Allt efter femman inom dina curly braces borde inte vara giltig kod. Har det fallit bort tecken?

Visa signatur

Mostly Harmless

Permalänk
Medlem
Skrivet av Tallrot:

Jag vill plocka ut de första fyra raderna på varje produkt

Jag hade struntat i regex i så fall. Läs produkten radvis och ta de 4 första.

Permalänk
Medlem
Skrivet av lydell:

Jag hade struntat i regex i så fall. Läs produkten radvis och ta de 4 första.

Håller med här, betydligt enklare

Permalänk
Medlem

Ser nu att min kopierade regex blev lite märklig i kopieringen, jag måste ha råkat möblera om med muspekaren men stort tack Kaspersky 0_o för exemplet, den funkar perfekt