2015-08-11 18 views
5

Numara alıyorum, bir dizeye dönüştürmeye çalışıyorum ve üçlü olmayan tüm karakterleri değiştiriyorum.Üçlü olmayan karakterleri değiştirmek için Java regex negatif görünümü

Ör. 1222331'dan geçersem, değiştir yöntemim 222'u döndürmelidir. Bu modelin var olduğunu ancak değeri elde etmem ve ek mantık için bir dizeye kaydetmem gerekiyor. Bu dize boyunca yinelemek için bir döngü yapmak istemiyorum.

Aşağıdaki kod var:

String first = Integer.toString(num1); 
String x = first.replaceAll("^((?!([0-9])\\3{2})).*$",""); 

Ama aynı zamanda üç basamak yerine gelen. Sadece karakterlerin geri kalanını değiştirmek için ihtiyacım var. Benim yaklaşımım yanlış mı? ((\d)\2{2})|\d - - eşleşmeleri ya üç kere tekrar eder (ve Grup 1 içine yakalar), ya da sadece başka bir rakamla eşleşir bir rakam

+4

Belki de "first = first.replaceAll (" ((\\ d) \\ 2 {2}) | \\ d "," $ 1 ");'? –

+0

@jorge Campos, bir satırda 3 sayı döndürdüğü için işe yaramadı. – Help123

+0

@stribizhev çalıştı! Çok teşekkürler. – Help123

cevap

3

Sen

first = first.replaceAll("((\\d)\\2{2})|\\d", "$1"); 

regex demo

regex bakın kullanabilirsiniz. $1 sadece diğerlerini kaldırırken ortaya çıkan dizede yakalanan metni geri yükler.

+0

Sizin için çalışıyor mu veya daha fazla açıklamaya ihtiyacınız var mı? –

İlgili konular