Also ich bin im Vergleich Strings mit dem folgenden Muster:Verwirrung über Mustervergleich in Java
"\"([a-zA-Z]*)\""
Bin ich richtig in das Denken bedeutet, dass es erlaubt, nur für Strings, die haben:
- Genau ein Anführungszeichen am Anfang - \ ",
- Genau ein Anführungszeichen am Ende, - \" - und;
- Ein beliebige Anzahl von entweder klein oder Großbuchstaben dazwischen - ([a-zA-Z] *)
Ich frage dies, weil das ist, was ich nach dem Scheuern sowohl Stackoverflow zu dem Glauben verleitet worden, und das Internet. Aber die Methode "matches()" wirft keine PatternSyntaxException, wenn ich ihr eine leere Zeichenfolge gebe. Was ich damit meine ist:
|""| //This is valid or is meant to be
|| //This is invalid or is meant to be
Wer kümmert sich um mich aufzuklären? Für den Kontext ist dies in Java.
Bearbeiten: Hi all, die Zeichenfolge, die ich mit der Regex übereinstimmt, hat Anführungszeichen (Ich frage den Benutzer, eine Nachricht in Anführungszeichen eingeschlossen). Der Code, den ich zu schreiben versuchen ist:
if(!(components[MESSAGE].matches("^\\"([a-zA-Z]*)$\\"")))
throw new InvalidSyntaxException(" > ERROR: Message must be surrounded by quotation marks.");
Wo InvalidSyntaxException 'eine benutzerdefinierte Ausnahmeklasse ist.
Einige Beispiele:
|""| - valid
|| - invalid (quotes required)
|"Example"| - valid
|"The year is 1995"| - invalid (no numbers)
GELÖST: Sie waren in Ordnung - die mein Code einzige, was nicht war tat Räume innerhalb der Nachricht ermöglichen! Deshalb beschwerte er sich ständig. Danke noch einmal!
Ich bin nicht sicher, warum Sie würden denken, dass 'matches()' sollte eine Ausnahme werfen. Dies geschieht nur bei einem ungültigen Muster, nicht wenn es nicht mit der Zeichenkette übereinstimmt. Jede Zahl enthält auch keine, also ist "" eine gültige Übereinstimmung. – UnholySheep
Sie müssen den 'boolean' Rückgabewert von' matches' prüfen, keine Ausnahme erwarten. Die Ausnahme wird nur ausgelöst, wenn - wie der Name sagt - die Syntax der Regex schlecht ist. Ihre Syntax sieht gut aus. – Gene
@Gene, was ist dann der Unterschied zwischen fehlerhafter Syntax und fehlgeschlagener Syntax? Wie in, einfach "falsch" zu sein, anstatt eine Ausnahme zu werfen. –