Liste aller Sonderzeichen, die in einer Regex maskiert werden müssen
Ich versuche, eine Anwendung zu erstellen, entspricht eine Nachricht, die Vorlage mit einer Nachricht, die ein Benutzer versucht, zu senden. Ich bin mit Java-regex zum Abgleich der Nachricht. Die Vorlage/Nachricht, kann Sonderzeichen enthalten.
Wie kann ich die komplette Liste der Sonderzeichen, müssen maskiert werden, um für meine regex zu arbeiten und übereinstimmung in der maximal möglichen Fällen?
Ist es eine Universelle Lösung für die Flucht alle Sonderzeichen in Java regex?
InformationsquelleAutor der Frage Avinash Nair | 2013-01-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Finden Sie in der javadoc der Muster-Klasse: http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html
Müssen Sie entkommen, jeder char dort aufgeführt, wenn Sie möchten, dass die regelmäßige char und nicht die Besondere Bedeutung.
Als eine vielleicht einfachere Lösung, man kann die Vorlage zwischen \Q und \E - alles, was zwischen Ihnen ist, als entkommen.
InformationsquelleAutor der Antwort Sorin
\.[]{}()<>*+-=?^$|
]
und}
) werden nur müssen escaped werden nach dem öffnen die gleiche Art von Halterung.[]
-Klammern werden einige Zeichen (wie+
und-
) haben manchmal Arbeit, ohne Ausweg.InformationsquelleAutor der Antwort Tobi G.
Flucht konnten Sie nur verwenden Sie dieses aus Java 1.5:
Ihnen passen exacty das Wort
$test
InformationsquelleAutor der Antwort madx
Entsprechend der String-Literale /Metazeichen Dokumentation Seite Sie sind:
<([{\^-=$!|]})?*+.>
Es wäre auch cool zu haben, die Liste begutachtete irgendwo im code, aber ich nicht weiß, wo das sein könnte...
InformationsquelleAutor der Antwort Bohdan
Auf @Sorin Vorschlag des Java-Pattern-docs, es sieht aus wie chars zu entkommen, sind mindestens:
InformationsquelleAutor der Antwort pete
Kombinieren, was jeder sagte, ich schlage vor, die folgenden, um die Liste der Zeichen besonderes zu RegExp übersichtlich aufgelistet in Ihrem eigenen String, und zu vermeiden, dass zu versuchen, um visuell zu analysieren Tausende von "\\"'s. Dies scheint zu funktionieren ziemlich gut für mich:
InformationsquelleAutor der Antwort NeuroDuck
auf der anderen Seite der Münze, die Sie verwenden sollten "non-char" regex so Aussehen, wenn die Sonderzeichen = allChars - Anzahl - ABC - Ihr Platz im app-Kontext.
InformationsquelleAutor der Antwort Bo6Bear
Nicht sicher, ich verstehe Ihre Frage, aber ich denke, dass sollte man sich ansehen
Matcher.quoteReplacement()
InformationsquelleAutor der Antwort mkoryak