Laden...

"." oder das "," dürfen in Regexpattern nicht vorkommen

Erstellt von oehrle vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.035 Views
O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
"." oder das "," dürfen in Regexpattern nicht vorkommen

Hallo, breche mir gerade einen ab. Muss eine Prüfung vornehmen, an einem String, der 3 Zahlen haben darf. Aber vor den drei Zahlen darf kein Leerzeichen, kein "," und kein "." sein. Wie integriere ich das in das Pattern?

Regex regExp1 = new Regex(@"[\D^.^,]\d{3}");

1.552 Beiträge seit 2010
vor 11 Jahren

Hallo oehrle,

\d heißt Zahl, in diese Gruppe fällt das , und . schon gar nicht rein.

Dementsprechend ist \d{3}, bzw. ^\d{3}$ für ganze Strings schon ausreichend.

Gruß,
Michael

Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

O
oehrle Themenstarter:in
461 Beiträge seit 2009
vor 11 Jahren
Stringlänge

Hallo, mein String kann 10 oder auch bis 25 Zeichen lang sein. Es muss nur ein Teilstring mit drei aufeinanderfolgenden Ziffern enthalten sein, davor darf aber kein "," oder "." stehen. Die drei Ziffern können auch gleich am Stringanfang stehen.

AD21UZ123FG2 ==> OK

AD21UZ.123FG2 ==> Nicht OK

2.891 Beiträge seit 2004
vor 11 Jahren

(?<![.,])\d{3}

Das Forum ist aber kein Patterngenerator! Guck dir das [Artikel] Regex-Tutorial an, lad dir das Regex-Lab und probiere selbst.

49.485 Beiträge seit 2005
vor 11 Jahren

Hallo zusammen,

weil das in diesem Thread etwas durcheinander geht, hat mich das motiviert, den folgenden Hinweis zu verfassen: Unterschied zwischen Ziffern und Zahlen. 😃

Mal abgesehen davon, dass dN!3L schon den richtigen Weg per Lookbehind genannt hat, möchte ich noch ein Missverständnis klären, dass offensichtlich zu dem fälschlichen Teil [\D^.,] im Pattern aus dem Startbeitrag geführt hat. Die Zeichenmenge in eckigen Klammern lässt sich negieren, das ist richtig, aber nur ganz oder gar nicht. Negiert wird durch ein einzelnes ^ als erstes Zeichen hinter der öffnenden eckigen Klammer. Wenn das ^ nicht als erstes Zeichen steht, steht es wie (fast) jedes andere Zeichen innerhalb der eckigen Klammern für sich selbst. [ab] wäre also jedes beliebige Zeichen außer, den drei Zeichen a, b und . [ab] wäre jedes beliebige der drei Zeichen a, b und . [^^] wäre jedes beliebige Zeichen außer . Mit [\D.,] war also offensichtlich eigentlich [\d.,] gemeint (man beachte, dass aus dem großen D ein keines d wurde).

herbivore