Kennt sich jemand mit Unternehmensnamen Regex aus?
Ich brauche ein regex um alle Unternehmensnamen zu matchen, jedoch funktioniert meines nicht besonders gut hat jemand vielleicht eine Lösung dafür?
https://regex101.com/r/EFGZdj/1 (hier der Link zu dem regex bzw. Unternehmensnamen zu matchen)
hier mein Regex
".*\b([A-Za-zÄÖÜäöüß&+*()\/-]*\b(GmbH|gGmbH|GMBH|Gmbh|AG|KG|UG|ug|eG|e.V|mbH|e.G| e.K|Unternehmensgruppe| Gruppe| Aktiengesellschaft|Holding|GbR|Capital|GWU|Stadt|Sozialstiftung|Studentenwerk|GWG|Gemeinde|Gesellschaft|Staatsbedienstetenwohnungsbau|Landeshauptstadt|Anstalt|Stadtplanungsamt|Stiftung|Amt|Ministerium|Bauamt|Freistaat|Landratsamt|Bezirksamt|Universität|Staatsministerium|Stadtwerke|Landesamt|Bundesbank|Schulbau|Klinik|Kliniken|Klinikum))\b.*"
1 Antwort
Das komplett in RegEx (und in einem Zug) zu lösen ist schwierig.
Dein RegEx konnte ich noch etwas "eindampfen"
.*((G|gG)?mbH|[AKUue]G|e\.[VGK]|(Unternehmens)? *[Gg]ruppe| Aktiengesellschaft|Holding|GbR|Capital|GWU|Stadt|Sozialstiftung|Studentenwerk|GWG|Gemeinde|Gesellschaft|Staatsbedienstetenwohnungsbau|Landeshauptstadt|Anstalt|Stiftung|Ministerium|Bauamt|Freistaat|(Landrats|Stadtplanungs|Bezirks)?[Aa]mt|Universit.t|Staatsministerium|Stadtwerke|Landesamt|Bundesbank|Schulbau|Klinik(en|um)?).*
...das ändert jedoch nichts daran, das auch Email/Webadressen matchen. (das ließe sich wohl besser mit einer zusätzlichen (Ausschluß)prüfung des Matches auf '^E\s+.+@.+$' etc. regeln
ich zeigs mal in Powershell
demp.ps1
$EineAdresse = 'Immobiliengruppe GOC GmbH
Hochstraße 48
60313 Frankfurt am Main
T +49 69 20976790
E info@immobilien-gruppe.com
W www.aqa-zollhafen-mainz.de '
($EineAdresse) -split '\r?\n|\r'|
Where-Object {$_ -match '.*((G|gG)?mbH|[AKUue]G|e\.[VGK]|(Unternehmens)? *[Gg]ruppe| Aktiengesellschaft|Holding|GbR|Capital|GWU|Stadt|Sozialstiftung|Studentenwerk|GWG|Gemeinde|Gesellschaft|Staatsbedienstetenwohnungsbau|Landeshauptstadt|Anstalt|Stiftung|Ministerium|Bauamt|Freistaat|(Landrats|Stadtplanungs|Bezirks)?[Aa]mt|Universit.t|Staatsministerium|Stadtwerke|Landesamt|Bundesbank|Schulbau|Klinik(en|um)?).*'}|
Where-Object {$_ -notMatch '^E\s+.+@.+$' } #zweiter Pass: ... nicht die Emailangabe
pause
Was Du Da vor hast ist alles andere als einfach zu lösen und ganz sicher nicht allein auf Basis von RegEx
Das Problem ist die sequenzielle Anordnung der Daten (und zu allem Übel auch noch die unterschiedliche Anordnung der Datenfelder ... einige erstrecken sich über mehrere Zeilen... manche Datenfelder sind sogar mehrfach vorhanden🤮) . solch ein "Kuddelmuddel" maschinell auseinander zu klamüsern ist extrem schwierig.
Ein weiters Manko, es sind Deutsche Adressen mit Umlauten... Eine ganz fiese Nummer mit RegEx: https://stackoverflow.com/questions/22017723/regex-for-umlaut ...AAABER: Wehe der Text ist nicht Unicode sondern ANSI.... dann gehen die \Unnnn-Sequenzen ins Leere
Vielleicht fällt mir noch irgendwann was schlaues ein um wenigstens einigermaßen System in sowas zu bringen...