Reguläre Ausdrücke für die Praxis: Reg-(H)exen für Dummies, hier kommen eure funktionierenden Ausdrücke rein

  • Hallo zusammen!


    In diesem Thread wollen wir und hoffentlich auch ihr alle in der Praxis in GREYHOUND angewendeten regulären Ausdrücke mit Beispielen veröffentlichen. Dieser Thread soll ausdrücklich eine fortwährende Dokumentation / Tutorial aller verwendeten und funktionierenden regulären Ausdrücke sein. Wenn ihr Fragen oder Probleme mit regulären Ausdrücken habt, postet diese mit entsprechend in einen eigenen Thread im jeweiligen Unterforum oder wendet euch an euren Kundenberater .


    Für alle Geek's gehts hier zu unserer Regex-Doku: http://greyhound-software.com/docs/script/texts/texts_id=29


    Es wäre schön wenn wir uns der Übersichtlichkeit auf ein "Format" festlegen könnten, wie wir unsere Beispiele hier posten:


    Beschreibung: "Was macht der reguläre Ausdruck?"
    regulärer Ausdruck: [regulärer Ausdruck]
    Ersetzung / Substitution: $0
    Kontext-Beispiel: [Beispiel-Kontext]
    Ergebnis: [Ergebnis]


    Beispiel:
    Beschreibung: "Sucht nach dem freistehenden Begriff GREYHOUND, case-sensitive!"
    regulärer Ausdruck: \bGREYHOUND\b
    Ersetzung / Substitution: $0
    Kontext-Beispiel: Die Software GREYHOUND ist ein Produkt der digitalguru GmbH & Co. KG.
    Ergebnis: GREYHOUND


    Los gehts! :thumbsup:

  • Beschreibung: "Sucht nach einer 5 bis 11-stelligen Kontonummer"
    regulärer Ausdruck: (?i)K ?(on)?t ?o\s*[,.-]{0,2}\s*(n(umme)?[rou])?\s*[,.:]{0,2}\s*((1 ?2 ?3 ?4 ?5 ?6 ?7 ?8)|((\s?\d){5,11}))(\D|$)
    Ersetzung / Substitution: $6
    Besonderheit: Im Bereich "(1 ?2 ?3 ?4 ?5 ?6 ?7 ?8)" kann die eigene Kontonummer angegeben werden, um diese bei der Suche auszuschließen.
    Kontext-Beispiel: Das ist eine Kontonummer: 282 1982
    Ergebnis: 2821982

  • Beschreibung: "Sucht nach der Umsatzsteuer-ID"
    regulärer Ausdruck: (?#UmsatzsteuerID_20120428,sl)(?ism)((DE\s?X\s?X\s?X\s?X\s?X\s?X\s?X\s?X\s?X).*?)?((DE|ATU|FR|NL|LU)(\s?\d){9})(\D|$)
    Ersetzung / Substitution: $3
    Besonderheit: Im Bereich "(DE\s?X\s?X\s?X\s?X\s?X\s?X\s?X\s?X\s?X)" kann eure eigene Ust-ID angegeben werden, um diese auszuschließen.
    Kontext-Beispiel: Das ist eine Umsatzsteuer-Identnummer: DE123 456 789
    Ergebnis: DE123456789

  • Beschreibung: "Sucht nach dem 17-stelligen PayPal Transaktionscode, erlaubt sind Zahlen und Grossbuchstaben."
    regulärer Ausdruck: \b[0-9A-Z]{17}\b
    Ersetzung / Substitution: $0
    Besonderheit: keine
    Kontext-Beispiel: Das ist ein PayPal-Transaktionscode: 6DG52096LU719325V
    Ergebnis: 6DG52096LU719325V

  • Beschreibung: "Sucht nach der ebay-Referenznummer, welche in jeder ebay-Nachricht vorkommt."
    regulärer Ausdruck: (\[#[\d\w-]{14}#\]_\[#[\d\w]{32}#\])|\s(\[#[\d\w]{32}#\])
    Ersetzung / Substitution: $1$2
    Besonderheit: keine
    Kontext-Beispiel: E-Mail-Referenznummer: [#a06-3we66ozoxk#]_[#1460520f9d184019b8054de912a1862a#]
    Bitte entfernen Sie diese Nummer nicht. Wenn Sie Kontakt mit unserem Kundenservice aufnehmen, werden Sie eventuell nach dieser Nummer gefragt.
    Ergebnis: [#a06-3we66ozoxk#]_[#1460520f9d184019b8054de912a1862a#]

  • Beschreibung: "Sucht nach einer gültigen IBAN mit bis zu 31 Stellen"
    regulärer Ausdruck: [a-zA-Z]{2}[0-9]{2}[a-zA-Z0-9]{4}[0-9]{7}([a-zA-Z0-9]?){0,16}
    Ersetzung / Substitution: $0
    Besonderheit: sucht nach IBAN's mit bis zu 31 Stellen, laut ISO 13616 sind bis zu 34 Stellen möglich, diese finden in der Praxis aber bis dato keine Anwendung: http://de.wikipedia.org/wiki/I…ional_Bank_Account_Number
    Kontext-Beispiel: Das ist ein IBAN: Das ist eine IBAN: MT21700519950000007229245345431
    Ergebnis: MT21700519950000007229245345431

  • Beschreibung: "Sucht nach einer gültigen BIC/SWIFT"
    regulärer Ausdruck: ([a-zA-Z]{4}[a-zA-Z]{2}[a-zA-Z0-9]{2}([a-zA-Z0-9]{3})?)
    Ersetzung / Substitution: $0
    Besonderheit: sucht nach BIC's mit 8 bis 12 alphanumerischen Zeichen
    Kontext-Beispiel: Das ist ein BIC: BYLADEM1FFB
    Ergebnis: BYLADEM1FFB

  • Beschreibung: Sucht nach einer freistehenden X-stelligen Nummer (Rechnungsnummer, Bestellnummer, Auftragsnummer, etc.) mit Prefix
    regulärer Ausdruck: \b(R\d{6})\b
    Ersetzung / Substitution: $1
    Besonderheit: "R" beschreibt den Prefix, "{6} die Anzahl der vorkommenden Ziffern nach dem Prefix
    Kontext-Beispiel: Das ist eine Rechnungsnummer: R123456
    Ergebnis: R123456

  • Beschreibung: Sucht nach einer freistehenden X-stelligen Zahl (Rechnungsnummer, Bestellnummer, Auftragsnummer, etc.) mit Bindestrich, gefolgt von einer weiteren einstelligen Zahl.
    regulärer Ausdruck: \b(\d{6}-\d)\b
    Ersetzung / Substitution: $1
    Besonderheit: keine
    Kontext-Beispiel: Das ist eine Bestellnummer: 123456-1
    Ergebnis: 123456-1

  • Beschreibung: Sucht nach der Amazon-Bestellnummer
    regulärer Ausdruck: \b(\d{3}-\d{7}-\d{7})\b
    Ersetzung / Substitution: $1
    Besonderheit: Ausgenommen sind virtuelle Produkte, hier wird ein anderes Bestellnummern-Muster verwendet.
    Kontext-Beispiel: Das ist eine Amazon-Bestellnummer: 302-9327276-6331545
    Ergebnis: 302-9327276-6331545

  • Beschreibung: Sucht nach einem zweizeiligen, beliebigen Text nach einem bestimmten Begriff




    regulärer Ausdruck: (?ms)(HINWEIS: )(.*?\r\n.*?\r\n)
    Ersetzung / Substitution: $2
    Besonderheit: keine
    Kontext-Beispiel:
    HINWEIS: Dies ist ein Hinweis
    mit einem Zeilenumbruch.
    Ergebnis: Dies ist ein Hinweis mit einem Zeilenumbruch.

  • Beschreibung: "Sucht nach dem ebay-Mitgliedsnamen, welcher im Absender einer ebay-Nachricht vorkommt."
    regulärer Ausdruck: .*(\s([^\s]+)\s[a-z0-9\.\*-_\<;&]*@[a-z0-9\.\-_]*ebay\.).*
    Ersetzung / Substitution: $2
    Besonderheit: keine
    Kontext-Beispiel: eBay-Mitglied: digitalguru <digita_iudu4258uffc@members.ebay.de>
    Ergebnis: digitalguru

    Der Regex ist suboptimal, da er Emailadressen mit "ebay" Subdomains ebenfalls durch lässt.


    Beispiel: "eBay-Mitglied: garkeinEbayKunde <garkeinEba_gw45gw5w46@ebay.bösepoofingdomain.com>" würde von dem Regex auch als eBay-Kunde erkannt werden.


    Mein Vorschlag wäre:


    Beschreibung: "Sucht nach dem ebay-Mitgliedsnamen, welcher im Absender einer von eBay gesendeten Nachricht vorkommt."
    regulärer Ausdruck: .*(\s([^\s]+)\s[a-z0-9\.\*-_\<;&]*@members\.ebay\.(com|ca|co\.uk|com\.au|at|fr|de|it|nl|es|ch|in|ie|ph|pl))
    Ersetzung / Substitution: $2
    Besonderheit: Es werden nur valide eBay-Domains erkannt
    Kontext-Beispiel: eBay-Mitglied: digitalguru <digita_iudu4258uffc@members.ebay.de>
    Ergebnis: digitalguru


    Edit:
    Es werden nur Domain-Namen des Types "@members.ebay.XX" erkannt. Ich konnte bisher noch keine vollständige Liste aller eBay-Domains finden.
    Hier gibt es eine Auflistung von eBay-Domains. Spezielle Marktplätze wie "www.befr.ebay.be" sind in dem Regex nicht abgedeckt, da ich kein Muster einer Kundennachricht habe und dementsprechend den richtigen Domainnamen nicht kenne. Falls jemand Beispiele hat, würde ich mich über eine Nachricht freuen und den Regex weiter anpassen.

  • Beschreibung: Zerlegt den Betreff in seine Einzelteile


    regulärer Ausdruck: \[([\d\w\s].*)[ ][-][ ]([\d\w\s].*)[#]([\d]{1,5})\][ ](?:\((.*)\)[ ])?(.*)
    Ersetzungen / Substitutionen:
    $1 --> Projekt
    $2 --> Tracker
    $3 --> Ticket-ID
    $4 --> Status (optional)
    $5 --> Ticket-Name


    Kontext-Beispiel: "[ATM - Erweiterung #572] (Erledigt) Backup Greyhound"
    Ergebnis:
    $1 --> "ATM"
    $2 --> "Erweiterung"
    $3 --> "572"
    $4 --> "Erledigt"
    $5 --> "Backup Greyhound"


    Sollte bei einem Ticket noch kein Status gefüllt sein, so bleibt $4 leer, $5 rutscht somit nicht nach.