2014-11-05 82 views
0

初學者在這裏。如何使用正則表達式來替換隻有非數字(包括負數)子字符串的字符串?Java replaceAll()非數字和負數?

例子:

String src = "Copper=-32" 

Regex output should be "-32" 

我一直在嘗試使用:

src = src.replaceAll("\\D+",""); <----- used various regex patterns, which don't work. 

謝謝!

+0

「不要工作」如何? – khelwood 2014-11-05 18:35:30

+1

你只是期待整數,還是可以有小數,科學記數法等? – 2014-11-05 18:38:54

+0

@Tim Pietzcker Only整數 – NTDF 2014-11-05 18:40:13

回答

1

Google是你的朋友。當我搜索「數字正則表達式」時,你會得到一個有很好解釋的答案:Matching Floating Point Numbers with a Regular Expression。他們的最終答案是

[-+]?[0-9]*\.?[0-9]+. 

但它是值得閱讀文章,看到陷阱。

+0

值得注意的是,如果需要多次替換,那麼值得重構java'Pattern'和'Matcher'對象。 – 2014-11-05 19:46:43

0

既然你只需要更換整數值,儘量

String src = "Copper=-32"; 
System.out.println(src.replaceAll("\\d+","")); 

重要的是要表示的是小寫字母d。

如果你想刪除的正/負標誌然後使用:

String src = "Copper=-32"; 
System.out.println(src.replaceAll("[-+]?\\d+","")); 

[]允許您指定要在那個位置上的字符匹配的列表。所以我們基本上是說匹配a +或 - 然後是許多數字。

編輯已添加?在[-+]之後使其成爲可選項。感謝user949300指出它。

+0

你應該放一個?在'[ - +]'之後使符號可選。 – user949300 2014-11-05 20:22:50