2016-04-05 71 views
2

我想用"\n"替換";",除非它使用前導'\'轉義。我還沒有弄清楚正確的正則表達式。具有轉義字符的Java模式正則表達式

以下是我有:

String s = "abc;efg\\;hij;pqr;xyz\\;123" 
s.replaceAll("\\[^\\\\];", "\\\\n"); 

我希望上面的字符串與"abc\nefg\;hij;pqr;xyz\;123"

+0

只是's.replace( 「\\」; 「\ n」);' – Maljam

+0

我不想替換\;與\ n。只有帶新行的分號。我修正了上面的正則表達式。 –

+0

所以,@DarthNinja,當你說「我想替換'\';與'\ n'「 - 你不是那個意思......那是對的?請問你的意思。 –

回答

2

使用負的外觀後面來代替:

s = s.replaceAll("(?<!\\\\);", "\n"); 

表達(?<!\\)(編碼爲Java字符串文字"(?<!\\\\)")表示「前一個字符不應該是反斜槓」


測試代碼:

String s = "abc;efg\\;hij;pqr;xyz\\;123"; 
s = s.replaceAll("(?<!\\\\);", "\n"); 
System.out.println(s); 

輸出:

abc 
efg\;hij 
pqr 
xyz\;123