2016-04-01 18 views
2

Ben Dize 46MTS007 ve ben {"46", "MTS", "007"}JAVA bölünmüş

String s = "46MTS007"; 
String[] spl = s.split("\\d+|\\D+"); 

Ama spl gibi bir dizi almalısınız sonucu pek harflerinden sayıları bölmek zorunda aşağıdaki boş kalır, ne yanlış var çalışmıyor regex? Ben regex101 test ettik ve onu gibi çalışıyor Bunu etrafa bakma bazlı normal ifadeler kullanabilirsiniz bölünmüş kullanmak istiyorsanız

cevap

1

(küresel bayrağıyla) beklenen:

(?<=\d)(?=\D)|(?<=\D)(?=\d) 

RegEx Demo

bölünmüş demektir Bir sonraki pozisyonun hane ve önceki hanelerin basamaksız olduğu VEYA pozisyon hane olmadığı ve bir önceki pozisyonun bir rakam olduğu yerler. Java'da

:

String s = "46MTS007"; 
String[] spl = s.split("(?<=\\d)(?=\\D)|(?<=\\D)(?=\\d)"); 
0

Regex dize bölmek olmaz kullanıyoruz. Split(), dizgiyi sağladığınız regex ile böler, ancak burada kullanılan regex, sınırlayıcı olmayan tüm dizgiyle eşleşir. Bir dizedeki farklı grupları bulmak için Pattern Matcher'ı kullanabilirsiniz.

public static void main(String[] args) { 
    String line = "46MTS007"; 
    String regex = "\\D+|\\d+"; 
    Pattern pattern = Pattern.compile(regex); 
    Matcher m = pattern.matcher(line);  
    while(m.find()) 
     System.out.println(m.group()); 
} 

Çıktı:

46 
MTS 
007 

Not: aksi takdirde bir sonrakine hareket edeceğiz her grubun ele geçirdikten sonra kullanıcı m.find() unutmayın.