2013-07-08 31 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