Hallo, ich habe hier einen Fehler, denk ich zumindest mal:
Zitat
E-Mail-Adresse (ohne Umlaute und ß) (Bsp: [email protected])
^[a-zA-Z0-9_-]{1,}[a-zA-Z0-9_-\.]*[a-zA-Z0-9_-]{1,}@[a-zA-Z0-9_-]{2,}\.[a-z]{2,4}$
[a-zA-Z0-9_-]{1,}[a-zA-Z0-9_-\.]*[a-zA-Z0-9_-]{1,}: Groß-, Kleinbuchstaben, Ziffern, Bodenstrich, Bindestrich als Beginn und als letztes Zeichen vor dem @ erlaubt; zusätzlich zu diesen Zeichen ein Punkt in der Mitte erlaubt (Punkt darf also nicht am Beginn und als letztes Zeichen vor dem @ stehen)
@: @-Zeichen
\.: Punkt als solcher und deshalb escaped
[a-z]{2,4}: für die 2 bis 4 Zeichen lange Toplevel-Domain (Bsp: de, com, info)
(und noch viele andere Lösungen (Microsoft-Lösung (in Microsoft Visual Studio Web Developer 2005 Express Edition): \w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*))
wenn ich diese Expression verwenden ("^[a-zA-Z0-9_-]{1,}[a-zA-Z0-9_-\.]*[a-zA-Z0-9_-]{1,}@[a-zA-Z0-9_-]{2,}\.[a-z]{2,4}$") bekomme ich folgende Exception:
"^[a-zA-Z0-9_-]{1,}[a-zA-Z0-9_-\.]*[a-zA-Z0-9_-]{1,}@[a-zA-Z0-9_-]{2,}\.[a-z]{2,4}$" wird analysiert - [x-y]-Bereich in umgekehrter Reihenfolge.
Hab noch nicht wirklich eine Ahnung warum, weil eigentlich sieht das ganze ja recht logisch aus. Sobald ich einen / den Fehler gefunden habe, poste ich diesen.
ob der Punkt am Anfang oder Ende steht oder irgendwo in der Mitte steht, spielt an sich keine Rolle. Der Punkt hat innerhalb von eckigen Klammern nicht mal sein übliche Sonderbedeutung, sondern steht auch ohne Backslash nur für sich selbst, also für einen Punkt und nicht für ein beliebiges Zeichen. Man kann den Backslash also einfach weglassen.
Das eigentlich Problem ist der Bindestrich, der wiederum nur innerhalb von Backslash seine bekannte Sonderbedeutung bekommt, sofern er nicht am Anfang oder am Ende steht. Dadurch, dass du den Punkt an den Anfang gesetzt hast, rückte der Bindestrich ans Ende und verlor seine Sonderbedeutung, was das Problem löste.
Allerdings finde ich persönlich den Gebrauch des Wortes "Regex" im Text etwas gewöhnungsbedürftig.
Z.b.: 4. Syntax von Regex.
Ich bin jetzt in diesem Gebiet kein Experte, doch diese Formuliering finde ich etwas unschön. Gut, wenn man Regex als Abkürzung für die deutsche Übersetzung "Reguläre Ausdrücke" verwendet, passt's einigermaßen, wenn auch grammatikalisch nicht so ganz.
Klar, ich will nicht allzu pingelig sein, jeder versteht's, vielleicht könntest du am Anfang einen kurzen Hinweis geben (z.B. unter 1, "im folgenden Text steht Regex stellvertretend für 'Reguläre Ausdrücke'" oder so etwas in der Art).
C# Tipps und Tricks: http://csharp-tricks.blogspot.com/
Bei den Übungen ist mir bei der Aufgabe 10 (Zahl zwischen -750 und 750) aufgefallen, dass das Pattern aus der Lösung auch -000, -00, -0, 00 und 000 zulässt. Wenn statt
^-?(7[0-4]\d|750|[0-6]?\d{1,2})$ das Pattern
^(0$|-?([1-9]\d?|[1-6]\d{0,2}|7[0-4]\d|750))$ verwendet wird besteht das Problem nicht. Sprich es wird geprüft, ob die Eingabe = 0 oder Minus bzw. kein Zeichen und 1-99 oder 100-699 oder 700-749 oder 750 ist.
Ähnlich ist es bei Aufgabe 11 (dreistellige Zahl von -750 bis 750). Hier funktionieren auch -000 und 000.
Das Problem lässt sich beheben indem aus
^-?(7[0-4]\d|750|[0-6]\d{2})$
^-?(7[0-4]\d|750|[1-6]\d{2})$ wird.
Dann ist mir noch ein Schreibfehler im Abschnitt 4.13 Positive und negative Look arounds aufgefallen:
Lookarounds (auch Assertations genannt) stellen die die Leistungsfähigkeit von
Moderationshinweis von herbivore
(13.08.2013 - 08:12:05):
Danke für den Hinweis. Ich habe die drei Punkte im Forum, aber nicht im PDF, korrigiert. Deinen ersten Patternvorschlag habe ich so geändert, dass auf jede der möglichen Zahlen immer nur genau eine der Alternativen matcht und dass -0 weiterhin zulässig ist, wobei letzteres zugegeben Geschmackssache ist.
Ich denke das letzte Strich ist zuviel, zumindest wenn man dem Beispiel und der Lösung folgt.
Gruß
shufflekeks
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von shufflekeks am .
Moderationshinweis von herbivore
(26.08.2014 - 10:21:21):
Danke für den Hinweis. Ich habe das überzählige Auftreten des Wortes "Strich" im Aufgabentitel entfernt. Allerdings wie bisher auch nur im Forum, nicht im PDF.