Bestimmte Sonderzeichen im Regulären Ausdruck

Aeglasin

Mitglied
Hallo, also mein problem is folgendes,
ich will nach dem ich mir zufällig ein Wort, aus Buchstaben(K&G) sowie Zahlen und unten genannten Sonderzeichen habe erzeugen lassen,wissen ob auch wirklich mindestens eine Zeichen jeder Kategorie drin is. Für Groß/Kleinbuchstaben sowie zahlen gestalltet sich das relativ einfach, nur diese verflixten Sonderzeichen machen mir da Probleme.
die betreffenden Zeichen sind:
!"§$%&/()=?{[]}+*~#'_-.:,<>|^°
und hier mein versuch das unterzubekommen
Java:
x.matches(".*[!\\\"§$%&/()=?{[]}\\+*~#'_-.:,<>|^°].*")
nun habe ich versucht diese, wie an mehren Stellen im Internet vorgeschlagen mit \ zu maskieren, was dabei raus kam, war leider nichts vernünftiges, auch weiterhin meinte meine Entwicklungsumgebung zu mir
java.util.regex.PatternSyntaxException: Illegal character range near index 28
was der Punkt wäre. Wenn ich den nun aber per \\ maskierte meint gefällt java weiterhin der Punkt nicht, nur das der index jetzt 29 statt 28 is😀
beim " hat es komischerweise geklappt, ebenso bekomm ich jetzt für das + keinen fehler mehr, wobei ich hier auch nicht ganz verstehe warum Java ZUERST der . auffällt und nicht zb gleich das ? was ja auch im Regex ne eigene Bedeutung hat wenn ich das recht verstanden hab.

Und bevor die frage kommt, aus bestimmten Gründen frage ich nicht in einem Match alle möglichen Zeichen ab, da nicht immer alle Zeichen notwendig sind
 
ah, einer meiner Lieblingsfehler 😉
der Bindestrich steht für einen Bereich, A-Z z.B., du kannst aber ohne Probleme den - als letztes Zeichen im [] schreiben,

die [] selber im [] musst du mit \\ maskieren,
für alle anderen Zeichen ist das unnötig, da kannst du noch bisschen sparen
(es sei denn du hast begründete Probleme mit \" und +)

falls du \ selber matchen willst, brauchst du \\\\ 😉
 
Zuletzt bearbeitet von einem Moderator:
Arg, das is ein Klassischer Fall von Brett vorm Kopf:lol:
jetzt da dus erwähnst is es natürlich logisch das Java damit seine Probleme hat😳
Und kaum tu ich das blöde ding ans ende und maskiere die Eckigen Klammer gehts, danke sehr
 

Zurück
Oben