ERLEDIGT
NEIN
NEIN
ANTWORTEN
3
3
ZUGRIFFE
269
269
EMPFEHLEN
-
Hallo Leute, bin ganz neu hier und hoffe das ihr mir helfen könnt.
Ich versuche einen DateValidator zu schreiben, und zwar mit einem regex-pattern. Dieses hab ich mir von regexlib geholt. Allerdings krieg ichs nicht hin, dieses in meinem eclipse richtig zu escapen.
wenn ich das im eclipse eingebe, dann bekomm ich "Invalid escape sequence (valid ones are \b \t \n \f \r \" \' \\ )"Code :1
private static final String _DATUM_PATTERN = "^((0?[13578]|10|12)[\.\-\/](([1-9])|(0[1-9])|([12])([0-9]?)|(3[01]?))[\.\-\/]((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1}))|(0?[2469]|11)[\.\-\/](([1-9])|(0[1-9])|([12])([0-9]?)|(3[0]?))[\.\-\/]((19)([2-9])(\d{1})|(20)([01])(\d{1})|([8901])(\d{1})))$";
Hab schon eine Menge gegoogled, aber irgendwie versteh ichs einfach nicht. Könnte einer von euch Experten das richtig escapen und erklären was ich falsch gemacht hab. Bitte!
-
08.08.11 13:02 #2SE Tutorials.de Gastzugang
Das ist ein typischer Anfängerfehler in Sachen RegEx.
In Java musst du die Escape-Sequenzen selbst escapen. So wird dann z.B. für einen einfachen Punkt aus "." *für JEDES Zeichen* ein "\\." da "\." keine gültige Escape-Sequenz darstellt.
Du musst jetzt also in deinem Pattern einfach nur vor jeden Backslash "\" einen zweiten setzen.
-
woah, vielen Dank für die schnelle Antwort!
Hab mich auf div. Seiten durch HowTo's gekämpft, aber das die Lösung so einfach ist... :/ Entweder muss ich mein English verbessern, oder ich bin doch noch etwas zu doof für regex.
Falls es den Forumregeln entspricht, würde ich diesen Thread gerne noch offen lassen und nicht als "Solved" markieren. Hab so das Gefühl, dass noch ein paar Fragen mehr auftauchen werden.
Danke nochmals für die schnelle Hilfe
-
08.08.11 13:30 #4SE Tutorials.de Gastzugang
Nein ... das Problem ist das du diesen Hinweis auch nicht in der offiziellen Java-Doc findest.
Es steht zwar in der Beschreibung von Pattern was man alles für Escape-Sequenzen hat, aber es fehlt der Hinweise das diese Escape-Sequenzen ebenfalls zu escapen sind da es sich ja immer noch um einen simplen String handelt.
Also bestes Beispiel eignet sich ein Backslash "\". Wenn du in einer RegEx auf einen einfachen Backslash "\" prüfen willst wäre die "normale" Darstellung in einem String folglich "\\". Da aber "\\" in RegEx gerade mal eine Escape-Sequenz einleitet musst du dahinter natürlich noch die Sequenz angeben. Da du jetzt aber auch den zweiten Backslash escapen musste um einen Backslash zu bekommen und keine neue Escape-Sequenz des nächsten Zeichens musst du also um EINEN Backslash mit einer RegEx zu finden das hier schreiben : "\\\\". Stell dir dann noch vor das du z.B. eine smb://-Adresse parsen willst die ja mit zwei Backslashes beginnt ... dann müsstest du um diese ZWEI Backslashes zu parsen ACHT in die RegEx schreiben.
Ähnliche Themen
-
Mittels Regex Gültigkeit einer anderen Regex prüfen
Von blade runner im Forum PHPAntworten: 8Letzter Beitrag: 25.06.10, 12:07 -
SQL/Oracle date/time -> suche Date
Von Goldman im Forum .NET CaféAntworten: 0Letzter Beitrag: 20.05.09, 15:28 -
[C#] Access DATE != DataGridView DATE ? + Daten ändern, aber wie?
Von Blackhawk50000 im Forum .NET Windows FormsAntworten: 22Letzter Beitrag: 31.07.08, 16:26 -
REGEX Problem - Regex auf den gesamten String anwenden?
Von angelikamorgan im Forum JavaAntworten: 1Letzter Beitrag: 21.01.08, 16:58 -
[RegEx] Hilferuf eines RegEx-Desperados
Von ManicMarble im Forum Coders TalkAntworten: 15Letzter Beitrag: 16.06.05, 08:49





Zitieren
Login





