Match regulären Ausdruck mit Anführungszeichen drin?
Ich habe eine Datei, die gelesen werden soll, anhand von regulären Ausdrücken. Die Zeichenfolge kann im Grunde alles beinhalten, (groß -, Kleinbuchstaben, Leerzeichen, Symbole, etc) so lange, wie die Linie ist nicht mehr als 60 Zeichen. Die Methode, die ich versucht, funktioniert für die meisten Zeichenfolgen in die Datei, allerdings brauche ich, um in der Lage sein zu ermöglichen Anführungszeichen, die ist, wo ich bin stecken. Hier ist, was ich bisher ausprobiert habe.
else if (data.matches("[A-Za-z0-9 ,.?!%&()@$-_:;\\\"]+$")
&& !label.equals("") && prompt.equals("") && data.length() <= 60)
{
prompt = data;
}
Liest es ist alles in Ordnung, außer den folgenden string
Yes, but an error is displayed, “Fuser out.”
Fragen nicht über die Schreibweise, war das, was war in der Beispiel-Datei, die ich gegeben wurde.
Vielen Dank für jede Hilfe, hoffentlich werde ich eine Antwort bekommen, bevor ich verlassen den Waschsalon, da bin ich auf Long Island und haben keine macht und kein internet zu Hause, Dank der Hurrikan.
- Wenn die Menschen haben, beantwortet alle Ihre Fragen in der Vergangenheit, sollten Sie prüfen, gehen Sie zurück und markieren Sie Sie als "Akzeptiert", indem Sie auf das Häkchen unterhalb der Abstimmung Pfeile. 🙂
- Kann Dateien enthalten, die eckigen Klammern?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hinzufügen
\"
regelmäßig in Ihrem Ausdruck z.B. unter:wo
\"
verwendet wird, wird es mit"
als literal zu entsprechen.\\\"
im aktuellen Charakter-Klasse (der wird\"
im regex) ist bereits interpretiert, als eine wörtliche"
Charakter.["]
und[\"]
("[\"]"
und"[\\\"]"
als Java-strings) behandelt werden genau die gleiche Weise.Dies ist copy paste aus deinem code
und es gibt true zurück, so ist es ok.
Aber ich habe ein problem wenn ich die copy-paste aus deinem code. Der Charakter " in deinem String, "Fixierstation heraus." ist eine andere characer als Ihr " in deinem regulären Ausdruck ??
Hier ist, wie ich landete, es zu vereinfachen, wenn jemand interessiert ist.
Sind Sie wahrscheinlich Probleme mit dem passenden string, weil es verwendet smart-Zitate. Der folgende Artikel hat einige gute Informationen auf dieser: Praktisch regexes für smart-Zitate
Die Zusammenfassung ist, dass Sie können fügen Sie diese Zeichen, um Ihre regex mit den folgenden Unicode-escapes:
Zusätzlich, es sieht aus wie Sie derzeit beabsichtigen, lassen Sie die beiden backslashes und Anführungszeichen in Ihrem Charakter-Klasse
\"
in Ihrer regex (\\\"
im Java-string). Dies ist nicht das tun, was Sie denken, es ist,\"
werden nur match-literal"
Charakter in Sie regex, es hat nur eine unnötige backslash. Tatsächlich gehören die backslashes als gültige Zeichen, müssen Sie vier aufeinanderfolgende backslashes in Ihre java-string.Müssen Sie auch die Flucht der Bindestrich, sonst
$-_
wird interpretiert als ein Zeichen-Palette.Damit Ihre neue regex Aussehen würde, so etwas wie dieses: