2016-04-05 20 views
2

";"'u "\n" ile değiştirmek yerine '\' önde gelen bir karakterle çıkmak istiyorum. Doğru regex'i anlamadım.Kaçış karakterleri içeren Java deseni normal ifadesi

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

ifadesi (?<!\\) (:

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

Yukarıdaki dize "abc\nefg\;hij;pqr;xyz\;123"

+0

sadece 's.replace ("\\;", "\ n");' – Maljam

+0

ben istemiyorum \ yerine; ile \ n. Sadece yeni satırlı noktalı virgüller. Yukarıdaki regex'i tamir ettim. –

+0

Yani, @DarthNinja, "Değiştirmek istiyorum" \; ' '\ n' ile - demek istemedin ... bu doğru mu? Sorduğunu sor, lütfen. –

cevap

2

Kullanım arkasında negatif görünüm ile değiştirilmesi beklersiniz: Burada

ben ne var bir java dize literal "(?<!\\\\)" olarak kodlanmıştır) "önceki karakter bir ters eğik çizgi olmamalıdır" anlamına gelir


Testi kodu:

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

Çıktı:

abc 
efg\;hij 
pqr 
xyz\;123 
İlgili konular