Seite 1 von 1

Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 17:49
von reneschmidt
Moin Moin zusammen,

ich versuche eingehende Papierrechnungen von Telekom, Vodafone und Co. automatisch auszulesen und der Buchhaltung so ein wenig die Arbeit zu erleichtern:
Inzwischen funktioniert das ganze auch relativ gut.

Das funktioniert auch relativ gut bis auf folgendes Problem:

Wir haben Mandanten, die relativ gerine Rechnungen bekommen. Dort wird der RG Betrag z.B. mit 15,02 EUR ausgelesen. etwas größere liegen dann z.B. bei 508,49 EUR aber wir haben auch die noch größeren die dann auch mal 6.985,15 EUR haben.

Wie kann der RegEx ausdruck aussehen, der alle Varianten abbildet?
Ich habe kein Problem mit 1, 2 oder dreistellen, aber sobald der der Punkt dazu kommt wird es schwierig.
Gibt es eine Möglichkeit einen Regex ausdruck zu bauen, der beide Fälle erkennen kann?

Vielen Dank

Re: Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 17:59
von sparrow
Ohne inhaltliche Logik?

Code: Alles auswählen

[\d,.]* EUR
Eine beliebige Anzahl Ziffern, "." und "," gefolgt von einem Leerzeichen und der Zeichenkette "EUR".

Re: Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 18:00
von __blackjack__
@reneschmidt: Beispielsweise r"(\d+\.)?\d+,\d{2} EUR". Das erkennt dann Zahlen mit mehr als einem Tausenderpunkt nicht mehr und erkennst auch Zahlen wo der Tausenderpunkt an der falschen Stelle steht, passt aber auf die genannten Beispiele.

Edit: Wenn man etwas systematischer an die Erstellung des regulären Ausdrucks heran geht: r"\d{1,3}(\.\d{3})*,\d{2} EUR". Das schaut auch ob die Tausenderpunkte an den richtigen Stellen stehen.

Re: Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 18:01
von ThomasL
auf die Schnelle

Code: Alles auswählen

(\d\.\d{3})\,\d{2}|(\d{1,3})\,\d{2}

Re: Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 18:04
von Sirius3
Du hast also jeweils ein bis drei Ziffern gefolgt von beliebig vielen Gruppen von Punkt und drei Ziffern, gefolgt von Komma mit zwei Ziffern:

Code: Alles auswählen

r"\d{1,3}(\.\d{3})*,\d{2}\s*EUR"
Wenn man Zahlen ohne Tausender-Trenner zulassen will, kann man natürlich auch den ersten Ziffernblock beliebig lang machen:

Code: Alles auswählen

r"\d+(\.\d{3})*,\d{2}\s*EUR"

Re: Rechnugserkennung Regex Rechnungsbetrag

Verfasst: Freitag 28. Februar 2020, 18:08
von ThomasL
da ist ein "oder" dazwischen