Aufkantung ist Sonderzeichen in Zeichenketten - wir \n
erstellen können oder "
wie \"
entkommen.
Aber Backslash ist auch in regulären Ausdruck engine - zum Beispiel können wir es verwenden, um Standardzeichen Klassen wie \w
\d
\s
zu verwenden.
Also, wenn Sie wollen Zeichenfolge erstellen, die wird Regex/Text darstellen wie \w
Sie müssen es als "\\w"
zu schreiben.
Wenn Sie regex schreiben wollen, die \
wörtliche dann darstellen Text darstellen solche Regex wie \\
aussehen muss, was bedeutet, String mit solchen Text als "\\\\"
geschrieben werden muss.
Mit anderen Worten müssen wir Backslash zweimal entkommen:
- einmal in regex \\
- und einmal in String "\\\\"
.
Wenn Sie zu Regex-Engine-Literal übergeben werden, die Registerkarte darstellen wird, dann müssen Sie Backslash überhaupt nicht entgehen. Java wird verstehen, "\t"
Zeichenfolge als Zeichenfolge, die Registerkarte Zeichen darstellt, und Sie können eine solche Zeichenfolge problemlos an Ihre Regex-Engine übergeben.
Für unsere Komfort Regex-Engine in Java interpretiert Text darstellen \t
(auch \r
und \n
) genauso wie Stringliterale "\t"
interpretieren. Mit anderen Worten, wir können den Regex-Engine-Text übergeben, der \
Zeichen und t
Zeichen darstellt und sicher sein, dass es als Darstellung von Tab-Zeichen interpretiert wird.
So Code wie split("\t")
oder split("\\t")
wird versuchen, auf Registerkarte zu teilen.
Code wie split("\\\\t")
wird versuchen, Text nicht auf Tab-Zeichen, sondern auf \
Zeichen gefolgt von t
zu teilen. Es passiert, weil "\\\\"
wie erklärt Text \\
darstellt, die Regex-Engine als Escapezeichen \
sieht (so wird es als Literal behandelt).
Sie könnten nur Ihre Frage bearbeiten, anstatt einen Kommentar hinzuzufügen und den falschen Text zu hinterlassen. – csmckelvey
Fügen Sie so viele Backslashs hinzu, bis es funktioniert. – Tunaki