如何使用java regex从字符串中提取数字?

时间:2014-07-17 02:50:36

标签: java regex

我的字符串包含货币(50美元,4美元)或文字"没有安排"。我需要提取数字或在文本替换为0的情况下。

所以例如

$45 would give me 45
 £55 would give me 55
not arranged gives 0 or nothing
       44 would give 44

我被告知.(.*[0-9])有效。它只是假设第一个字符是货币符号。如果我们省略符号或添加额外的领先空间,它将无法工作。最重要的是,我不理解代码.(.*[0-9])。有人可以解释一下吗?

当我试图自己创建正则表达式时,我认为[0-9] *会起作用,但它不会。我认为[0-9]代表一个数字,所以我想要抓住我将使用的所有数字[0-9] *。但它没有用。

我如何更换文字"未安排"用0.我只需要regexp代码而不是java代码。

我正在使用http://www.regexplanet.com/advanced/java/index.html进行测试。

1 个答案:

答案 0 :(得分:2)

这样的事情(假设要测试的字符串被称为subjectString):

String theNumbers = null;
Pattern regex = Pattern.compile("\\d+");
Matcher regexMatcher = regex.matcher(subjectString);
if (regexMatcher.find()) {
    theNumbers = regexMatcher.group();
} 
else subjectString = "0";