2015-07-14 2 views
0
nodenName = VAS_DEL_SDC_LB1_ONM_DEL_10.200.98.74; 
private String extractNodeName(String nodeName) { 
     String output = ""; 
     Matcher match = Pattern.compile("[0-9]+").matcher(nodeName); 
     while (match.find()) { 
      output.split(match.group()); 
     } 
     return output; 
    } 

может кто-нибудь помочь мне для извлечения только VAS_DEL_SDC_LB1_ONM_DEL, выше я попытался ее не работаетсогласовани в Java не получая требуемого выходного

+0

'String.split()' * не * меняет строку (потому что они неизменны). Вместо этого он возвращает * новый * 'String []' – Dragondraikk

+0

Я предлагаю вам ответить @Avinash Raj, вы можете проверить его [здесь] (http://regexr.com/) ... Этот сайт очень полезен – IlGala

ответ

1
private String extractNodeName(String nodeName) { 
     String output = ""; 
     Matcher match = Pattern.compile("\\w+(?<!\\d|_)").matcher(nodeName); 
     while (match.find()) { 
      output = match.group(); 
     } 
     return output; 
} 

Результат: VAS_DEL_SDC_LB1_ONM_DEL

+0

Большое спасибо Kerwin ... его работа вы можете объяснить compile (" \\ w + (? user3305374

+1

это совпадают буквы, а конец не номер или '_' – Kerwin

+0

' (? Kerwin

1

Просто матч все символы ДО первого _, которые существуют перед цифрой.

String output = ""; 
Matcher match = Pattern.compile(".*?(?=_[0-9])").matcher(nodeName); 
while(match.find()) 
{ 
    output = m.group(); 
} 
return output; 
+0

скомпилировал его, Соответствующее значение подходит как java.util.regex.Matcher [pattern =. *? (? = _ [0-9]) region = 0,36 lastmatch =] output is NULL – user3305374

+0

use 'match.find() ' –

0

Попробуйте это:

private static String extractNodeName(String nodeName) { 
    return nodeName.replaceAll("[\\d_.]{2,}", ""); 
} 
Смежные вопросы