Hallo Leute, Ich habe da mal eine Frage.. Ich bin kein absoluter Neuling in der Java Programmieren habe es jetzt schon ein Semester während meines Studiums. Leider bekomme ich für einen Bericht folgendes Konstrukt nicht voll ständig entschlüsselt. string.matches("[A-Za-z0-9\\ $\\%()\\-\\.\\/\\?^]*") Also es sagt mir ja das Groß- und Kleinbuchstaben 0-9 in dem String erlaubt ist. Aber was sagt mir nun die Zeichenfolge nach der 9 könnte mir die mal eben jemand aufschlüsseln? Mit der Bedeutung der einzelnen Zeichen. Und ja ich habe in den JavaDocs nach geschaut nur Leider komme ich nicht weiter. Ich glaube ich habe irgendwo einen Denkfehler. Vielen Dank für eure Hilfe. Mit freundliche Grüßen RateFuchs
RateFuchs schrieb: > Und > ja ich habe in den JavaDocs nach geschaut nur Leider komme ich nicht > weiter. Ich glaube ich habe irgendwo einen Denkfehler. Diese Seite: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html und der Text (von der gleichen Seite) "It is therefore necessary to double backslashes in string literals that represent regular expressions to protect them from interpretation by the Java bytecode compiler. The string literal "\b", for example, matches a single backspace character when interpreted as a regular expression, while "\\b" matches a word boundary. The string literal "\(hello\)" is illegal and leads to a compile-time error; in order to match the string (hello) the string literal "\\(hello\\)" must be used." sollten eigentlich ausreichen.
:
Bearbeitet durch User
Die Zeichenkette "[A-Za-z0-9\\ $\\%()\\-\\.\\/\\?^]*" entspricht bei Javas match funktion folgendem Regexp: /^[A-Za-z0-9\ $\%()\-\.\/\?^]*$/ Der String darf nur aus folgenden Zeichen bestehen:
1 | ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijplmnopqrstuvwxyz012345689 $%()-./?^ |
PS: Umlaute sind auch Buchstaben, sind aber nicht im Regexp enthalten.
P.S.: Statt "0-9\\ $\\%" sollte es wohl eigentlich "0-9\\$\\%" heißen, das Leerzeichen kommt mir falsch vor.
Vielen Lieben Dank. Hatte so was ähnliches mit dem 2. \ erwartet danke für die Hilfe
RateFuchs schrieb: > Hallo Leute, > > Ich habe da mal eine Frage.. Ich bin kein absoluter Neuling in der Java > Programmieren habe es jetzt schon ein Semester während meines Studiums. Ein Jahr? So ein bisschen im Studium? Du bist noch Neuling. > string.matches("[A-Za-z0-9\\ $\\%()\\-\\.\\/\\?^]*") Ein im Kern etwas wild mit Quoting versehene Zeichenklasse "[...]", die Null mal bis beliebig oft: * auftreten darf. Der ursprüngliche Autor hat es dabei mit dem Quoten von speziellen Zeichen etwas übertrieben, er hat wohl so lange \\ reingehauen bis es irgendwie lief. Die Zeichenklasse enthält einfach eine Oder-Verknüpfung aus: A-Z - A bis Z a-z - a bis z 0-9 - 0 bis 9 - Lehrzeichen, müsste nicht gequoted werden (könnte auch ein anderes Whitespace-Zeichen sein wie ein Tab, das wäre dann böser Pfusch). $ - Muss man hier nicht quoten, hat er auch nicht. % - Müsste nicht gequoted werden ( - Darf man hier nicht quoten, hat er auch nicht. ) - Darf man hier nicht quoten, hat er auch nicht. - - Muss man quoten wenn es an dieser Stelle steht, hat er, kann man aber besser machen . - Muss man quoten, hat er / - Müsste nicht gequoted werden ? - Müsste nicht gequoted werden ^ - Muss man hier nicht quoten, hat er auch nicht. Alle "muss", "müsste", "darf" ... unter der Bedingung, dass man die einzelnen Zeichen matchen möchte und man sich innerhalb einer Zeichenklasse befindet.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.