Aus irgendeinem Grund funktionierte die obige Antwort nicht für mich. Für diejenigen, die nach mir kommen, hier ist, was ich gefunden habe.
Ich habe erwartet, dass ein einzelner Backslash aus der Klammer entfernt wird. Sie müssen jedoch zwei verwenden, wenn Sie das Muster in einer Zeichenfolge gespeichert haben. Der erste umgekehrte Schrägstrich entkoppelt den zweiten in die Zeichenkette, so dass der Regex sieht \]
. Da Regex nur einen umgekehrten Schrägstrich sieht, verwendet er es, um der eckigen Klammer zu entkommen.
\\]
Im Regex, das wird eine einzelne schließende eckige Klammer übereinstimmen.
Wenn Sie beispielsweise versuchen, eine neue Zeile zu finden, verwenden Sie nur einen einzelnen umgekehrten Schrägstrich. Sie verwenden das Zeichenfolgen-Escape-Muster, um ein Zeilenumbruchzeichen in die Zeichenfolge einzufügen. Regex sieht nicht \n
- es sieht das Newline-Zeichen und stimmt damit überein. Sie benötigen zwei umgekehrte Schrägstriche, da es sich nicht um eine Zeichenfolge-Escape-Sequenz handelt, sondern um eine Regex-Escape-Sequenz.
Klingt ein bisschen perlish, wenn Sie mich fragen, haben Sie es in Java probiert (ich habe nicht, deshalb frage ich). – Fredrik
Es ist auch in Java gültig: http://java.sun.com/javase/6/docs/api/java/util/regex/Pattern.html (ctrl-F für "\ Q") – MatrixFrog
Im Java String Literal Format es wäre "\\ Q [0-9] \\ E" oder "\\ Q" + regex + "\\ E". Aber die quote() -Methode macht das für Sie, und es behandelt korrekt Strings, die bereits \ E in ihnen haben. –