Diese Seite liefert praxiserprobte Reguläre Ausdrücke (PCRE/Java), um in ecoDMS genau definierte Werte aus Belegen zu extrahieren – z. B. Datum, Gesamtbetrag, Nettobetrag, Umsatzsteuer-Betrag, USt-IdNr., Steuernummer, IBAN, Belegnummer u. a. Jedes Muster enthält genau eine Capture‑Gruppe mit dem Zielwert.
1. Allgemeine Hinweise & Flags
- Flags: in ecoDMS meist
i
(case‑insensitive) undm
(multiline) aktivieren. Wenn Werte eine Zeile tiefer stehen, zusätzlichs
(DOTALL) oder die unten genutzten(?s:.{0,40}?)
‑Zwischenräume verwenden. - Eine Capture‑Gruppe: Die Muster sind so gebaut, dass Gruppe 1 immer der gesuchte Wert ist (ohne Label).
- Währungen:
€
/EUR
vor/nach dem Betrag sind optional und stehen außerhalb der Gruppe. - Negative/Klammern: Für z. B. Gutschriften kannst du die Betragskomponente um optionale Klammern erweitern (siehe Beispiele).
2. Betrag – Basisbaustein
Dieses Fragment wird in mehreren Mustern verwendet (DE‑Format, Tausenderpunkt/Leerzeichen, Dezimalkomma, erlaubt auch ,-
bzw. ,–
):
([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)
Variante mit Klammern als negative Beträge
\(?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*\)?
3. Datum
a) 31.12.2025 / 31-12-2025 / 31/12/2025
(?i)\b(?:rechnungsdatum|ausstellungsdatum|datum)\b[^\d]{0,20}?(\d{1,2}[.\-/]\d{1,2}[.\-/](?:19|20)\d{2})\b
b) 2025-12-31 / 2025.12.31
(?i)\b(?:rechnungsdatum|ausstellungsdatum|datum)\b[^\d]{0,20}?((?:19|20)\d{2}[.\-/]\d{1,2}[.\-/]\d{1,2})\b
c) 31. Dezember 2025 (Monatsname)
(?i)\b(?:rechnungsdatum|ausstellungsdatum|datum)\b[^\d]{0,20}?(\d{1,2}\.\s*(?:januar|februar|märz|maerz|april|mai|juni|juli|august|september|oktober|november|dezember)\s*(?:19|20)\d{2})
Tipp: Wenn Label und Wert über Zeilenumbrüche getrennt sind, ersetze [^\d]{0,20}?
durch (?s:.{0,40}?)
.
4. Gesamtbetrag / Zahlbetrag (Brutto)
(?i)\b(?:gesamt(?:betrag)?|gesamtsumme|summe\s*brutto|zu\s*zahlen|zahlbetrag)\b[^0-9€eur]{0,30}?(?:€|eur)?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*(?:€|eur)?
5. Rechnungsbetrag (wenn explizit so bezeichnet)
(?i)\b(?:rechnungsbetrag)\b[^0-9€eur]{0,30}?(?:€|eur)?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*(?:€|eur)?
6. Nettobetrag / Zwischensumme
(?i)\b(?:netto(?:betrag)?|zwischensumme|summe\s*netto)\b[^0-9€eur]{0,30}?(?:€|eur)?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*(?:€|eur)?
7. USt./MwSt.-Betrag
(?i)\b(?:mwst|mehrwertsteuer|umsatzsteuer|ust\.?|ust\.?-betrag)\b[^0-9€eur]{0,30}?(?:€|eur)?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*(?:€|eur)?
Variante mit Prozentangabe vor dem Betrag (z. B. „MwSt 19%: 12,34“)
(?i)\b(?:mwst|umsatzsteuer|ust\.?)[^%\d]{0,15}?\d{1,2}\s*%[^0-9€]{0,15}?(?:€|eur)?\s*([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)
8. USt-IdNr. / VAT-ID
a) Deutschland
(?i)\b(?:ust-?id(?:nr\.?)?|umsatzsteuer-?identifikationsnummer|vat[-\s]?id)\b[^\w]{0,10}?(DE\d{9})\b
b) EU-weit (häufige Formate, inkl. DE)
(?i)\b(ATU\d{8}|BE0?\d{9,10}|BG\d{9,10}|CY\d{8}[A-Z]|CZ\d{8,10}|DE\d{9}|DK\d{8}|EE\d{9}|EL\d{9}|ES[A-Z0-9]\d{7}[A-Z0-9]|FI\d{8}|FR[0-9A-Z]{2}\d{9}|HR\d{11}|HU\d{8}|IE\d{7}[A-W][A-IJ-Z]|IT\d{11}|LT\d{9,12}|LU\d{8}|LV\d{11}|MT\d{8}|NL\d{9}B\d{2}|PL\d{10}|PT\d{9}|RO\d{2,10}|SE\d{12}|SI\d{8}|SK\d{10})\b
9. Steuernummer (Deutschland – häufige Schreibweisen)
Erfasst typische Muster wie 123/4567/8901
, 12/345/67890
oder kompaktes Format 12345678901
:
(?i)\b(?:steuer\s?nr\.?|steuernummer|st-?nr\.?)[^0-9]{0,15}?((?:\d{1,3}/\d{3,4}/\d{2,5})|(?:\d{2}/\d{3}/\d{4,5})|(?:\d{10,11}))\b
10. IBAN
a) Deutschland (schnell & pragmatisch)
(?i)\b(?:iban)\b[^A-Z0-9]{0,15}?(DE\d{20})\b
b) EU‑weit (generisch)
(?i)\b(?:iban)\b[^A-Z0-9]{0,15}?([A-Z]{2}\d{2}[A-Z0-9]{10,30})\b
11. Beleg-/Rechnungsnummer
Erfasst gängige Schlüsselwörter; die Gruppe enthält die Nummer selbst (alphanumerisch, erlaubt -_/.
):
(?i)\b(?:rechnungs?-?nr\.?|rechnungsnummer|beleg-?nr\.?|belegnummer|rechnung)\b[^A-Z0-9]{0,20}?([A-Z0-9][A-Z0-9\-_.\/]{3,})
12. Zahlungsdatum
(?i)\b(?:zahlungsdatum|bezahlt\s*am|valuta)\b[^\d]{0,20}?(\d{1,2}[.\-/]\d{1,2}[.\-/](?:19|20)\d{2})\b
13. Steuersatz (%-Angaben)
Extrahiert den Prozentsatz (z. B. 19%
, 7%
) – Gruppe enthält nur die Zahl mit Prozentzeichen:
(?i)\b(?:mwst|ust\.?|umsatzsteuer|steuer)\b[^%\d]{0,15}?(\d{1,2}\s?%)
14. Generischer €‑Betrag (Fallback ohne Label)
(?i)(?:\b(?:€|eur)\s*)?([-+]?(?:\d{1,3}(?:[.\s]\d{3})*|\d+)(?:,\d{2}|,-|,–)?)\s*(?:€|eur)\b
15. ecoDMS‑Tipps & OCR‑Robustheit
- Zwischenräume anpassen: Die Platzhalter
[^...]
bzw.(?s:.{0,40}?)
kannst du je nach Layout auf0,60
o. ä. erhöhen. - Zeilenumbrüche: Bei OCR entstehen oft weiche Umbrüche – setze Flag
s
oder nutze die DOTALL-Varianten oben. - Nur Gruppe 1: Achte beim Einrichten in ecoDMS darauf, dass immer die erste Gruppe den Wert liefert.
- Mehrsprachige Belege: Ergänze bei Bedarf weitere Labels (z. B.
invoice date
,total
,VAT
,tax
), die Betrags-/Datumsbausteine bleiben identisch. - Tests: Pro Dokumententyp 2–3 echte Belege testen; bei Fehltreffern zielgerichtet das jeweilige Label‑Set erweitern.
Fragen oder Sonderfälle? Schreib uns an mail@design-company.de – gern passen wir die Muster auf eure Belege an (Gutschriften, mehrere Währungen, spezielle Layouts usw.).