Java replaceAll()非数字和负数?

时间:2014-11-05 18:33:08

标签: java regex

初学者。如何使用正则表达式替换仅包含非数字(包括负数)子字符串的字符串?

示例:

String src = "Copper=-32"

Regex output should be "-32"

我一直在尝试使用:

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

谢谢!

2 个答案:

答案 0 :(得分:1)

Google是你的朋友。当我在&#34;正则表达式中搜索数字&#34;你会得到一个很好的解释答案:Matching Floating Point Numbers with a Regular Expression。他们的最终答案是

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

但是阅读这篇文章非常值得看看陷阱。

答案 1 :(得分:0)

由于您只想替换整数值,请尝试

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

表示重要的是小写d。

如果您想删除阴性/阳性体征,请使用:

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

[]允许您指定要在该位置匹配的字符列表。所以我们基本上说匹配一个+或 - 后面跟着很多数字。

修改已添加?在[-+]之后使其成为可选项。感谢user949300指出它。