Ungültige Escape-Sequenz (gültige sind \ b \ t \ n \ f \ r \ "\ '\)

8

Ich habe ein Problem mit einem Regex in Java.

Wenn ich versuche, diese Regex zu verwenden:

%Vor%

Ich bekomme den folgenden Fehler

%Vor%

Ich weiß nicht, wie ich mit diesem Fehler umgehen soll. Ich habe bereits versucht, die Backslashes zu verdoppeln, aber es hat nicht funktioniert. Ich hoffe, dass mir jemand dabei helfen kann.

Danke

    
Annika 23.04.2013, 20:52
quelle

3 Antworten

10

Dies sollte funktionieren ^(?:(?:([01]?\d|2[0-3]):)?([0-5]?\d):)?([0-5]?\d)$

Der Grund ist, dass die aufgelisteten Symbole in der Fehlermeldung eine besondere Bedeutung haben, aber \d ist keines der definierten Sonderzeichen für die Verwendung von \ , das heißt, Sie müssen es umgehen (indem Sie ein zusätzliches% co_de hinzufügen % vor dem Symbol).

    
Uku Loskit 23.04.2013, 20:55
quelle
7

Wenn Sie in Java reguläre Ausdrücke schreiben, vergessen Sie nicht, die Zeichen \ zu entfernen, die in der Zeichenfolge verwendet werden, die den regulären Ausdruck definiert. Mit anderen Worten, wenn Ihr regulärer Ausdruck ein \ enthält, dann müssen Sie zwei \ schreiben. Zum Beispiel sollte Ihr Code wie folgt aussehen:

%Vor%

Warum fragst du? Weil \ in Zeichenketten von Java das Escape-Zeichen ist, das zur Bezeichnung von Sonderzeichen verwendet wird (Beispiel: Tabulatoren, neue Zeilen, usw.) und wenn eine Zeichenkette ein \ enthält, muss sie selbst maskiert werden, indem ein anderes \ vorangestellt wird vor. Daher \ .

Für das Protokoll hier ist die Java-Spezifikationsseite, auf der die gültigen Escape-Zeichen und ihre Bedeutungen aufgelistet sind, beachten Sie die letzte:

%Vor%     
Óscar López 23.04.2013 20:57
quelle
1

Sie können notepad ++ mit find / verwenden und durch // ersetzen

    
sfblap 08.10.2016 05:02
quelle

Tags und Links