2013-07-08 2 views
4
String str=",Name=Tom,Age=23,something=something,roll=1,somethng=55," 

Я хочу удалить все эти пары значений из строки, значение которой является числом.Регулярное выражение для удаления определенных шаблонов

Теперь я делаю что-то вроде этого

Pattern p = Pattern.compile(",[^=]*?=([^,]*),"); 
    Matcher m = p.matcher(str); 
    String result = ""; 
    while (m.find()) { 
     if (!isNumeric(m.group(1))) { 
      result += m.group(0); 
     } 

    } 
    System.out.println(result); 

Ожидаемый результат является

",Name=Tom,something=something," 

Но теперь я получаю

",Name=Tom,,something=something," 

Пожалуйста, помогите.

ответ

5
result=str.replaceAll(",[^=]*?=[0-9]+", ""); 
System.out.println(result); 

Вы можете попробовать это.

+0

Нет необходимости в неохотном квантере. –

+0

@Njay: Он работает как шарм. Большое спасибо sooooo much: D: D –

+0

Я бы использовал регулярное выражение '' (^ |,) [^, =] + = [0-9] + (? =, | $) ". Он защищает от недостатка ведущей запятой, отсутствия конечной запятой и значений типа '', name = Tom, publicKey = 24abf3ced, other = something, "', которые ваше регулярное выражение будет делать в ', name = Tomabf3ced, other = something "' – FrankieTheKneeMan

Смежные вопросы