Veröffentlicht 7. April 200619 j Hallo alle zusammen, ich arbeite gerade intensiv mit Regular Expressions und der .NET RegEx Engine. Zurzeit bereitet mir eine Regular Expression Kopfschmerzen. Mit dieser Expression will ich Vornamen und Nachnamen einer Person Matchen. Bsp.: Müller-Wohlfart, Anna Kathrin geb. Spieß Meine RegEx hat folgendes Format: ((?:[a-zA-ZäüöÄÜÖß_-]+[ ]?)+), ?((?:[a-zA-ZäüöÄÜÖß_-]+(?:[ ]|$))+) Dies gibt mir das gewünschte Ergebnis. (1)Müller-Wohlfart (2)Anna Kathrin Solange der Eingabestring gültig ist und die RegEx matcht, funktioniert alles tadellos. Doch sobald die RegEx nicht matcht, endet dies nicht als ein .IsMatch (...) == False. Nein, es endet überhaupt nichtmehr. Bsp.: aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Wenn dieser String gematcht werden soll hab ich wohl irgendwie eine RegEx mit Endlosschleife bekommen, was muss ich an der RegEx ändern, damit es funktioniert. Der Fehler tritt auf egal ab die RegEx compiliert oder nicht compiliert ist. Hab auch schon versucht sie zu negieren. ((?:[^ ,.\d]+[ ]?)+), ?((?:[^ ,.\d]+(?:[ ]|$))+) Hier tritt der gleiche Fehler auf. Getestet habe ich die RegEx in "Espresso" im "RegEx Designer" und direkt in meinem c# code. Weiß jemand eine Lösung für dieses Problem? MfG Markus
19. April 200619 j Einen Schritt zurück: Was willst du denn überhaupt mit der RegEx erreichen? Im welchen Fall soll sie Matchen, in welchem Fall nicht?
24. April 200619 j Hallo Argbeil, Die Regex sollte erkennen, ob ein Vorname und ein Nachname, Kommagetrennt in der Zeile existieren. Also erstmal eine Validierung, zusätzlich sollen Vor- ,und Nachname ein Gruppe 1 und Gruppe 2 abgelegt werden, um sie in einem Personenobjekt abzulegen. Das Problem habe ich denk ich mittlerweile gefunden. Dieser Ausdruck erzeugt beinahe endlosviele Matches, weil praktisch jede moegliche Zeichenkombination gematcht wird. (.+)+ Hab das Problem mittlerweile auf anderem Wege gelöst Danke für deine Antwort Markus
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.