嗨,我想分裂一個字符串分隔垂直酒吧。例如:java的正則表達式轉義字符
String str = "a=1|b=2";
在java中,我們應該做的是這樣的:
str.split("\\|");
如果我使用單斜線:
str.split("\|");
編譯器會發出錯誤:
無效的轉義序列(有效的轉義序列是\ b \ t \ n \ f \ r \「\'\)
任何人都可以解釋爲什麼會發生這種情況嗎?謝謝!
嗨,我想分裂一個字符串分隔垂直酒吧。例如:java的正則表達式轉義字符
String str = "a=1|b=2";
在java中,我們應該做的是這樣的:
str.split("\\|");
如果我使用單斜線:
str.split("\|");
編譯器會發出錯誤:
無效的轉義序列(有效的轉義序列是\ b \ t \ n \ f \ r \「\'\)
任何人都可以解釋爲什麼會發生這種情況嗎?謝謝!
反斜槓\
是一個特殊字符。在Java世界中,它被用來逃避角色。
管道|
是正則表達式世界中的一個特殊字符,意思是「或」。
要使用管道作爲分隔符,您需要將其轉義(因此可以在正則表達式分析過程中識別它),因此您需要在您的正則表達式中獲得此代碼:\|
。
但作爲backshlash是Java和您正在使用一個String對象特殊字符,你必須轉義反斜線,因此它可以被解釋爲最終的預期最終結果:\|
要做到這一點,你簡單地用另一個反斜槓轉義反斜槓:\\|
第一個反斜槓轉義轉義管道(正則表達式要求)的第二個反斜槓(java要求)。
在Java字符串中,反斜槓需要用另一個反斜槓進行轉義。所以,雖然正則表達式的「規範」形式確實是\|
,但是作爲Java字符串,這必須寫成"\\|"
。
'|'符號在正則表達式中有特殊含義,所以它需要被轉義。由於反斜槓字符_also_在字符串中具有特殊含義(它是一個轉義字符),因此它也需要在其中轉義。所以......你需要在你的正則表達式中使用兩個'\'符號。這個網站上已經涵蓋了很多次。 – jahroy