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