【问题标题】:how to extract a number from a string using java reg exp? [duplicate]java - 如何使用java reg exp从字符串中提取数字? [复制]
【发布时间】:2014-09-07 18:24:06
【问题描述】:

我得到的字符串包含货币 ($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。我只需要正则表达式代码而不是 java 代码。

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

【问题讨论】:

  • 您的输入和预期输出是什么?

标签: java regex


【解决方案1】:

类似这样(假设要测试的字符串称为subjectString):

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

【讨论】:

  • 它可以工作,但你能不能让它通用,这样它就不会依赖于货币符号?像“从字符串中获取数字并且数字可以从任何位置开始”之类的东西?
  • 试试这个正则表达式(\\d+),最后打印第1组。
  • 是的,请查看编辑后的代码。 :)
  • 知道了。现在可以了。谢谢。
  • 不客气。很高兴它有帮助,谢谢。 :)
猜你喜欢
  • 2018-10-25
  • 1970-01-01
  • 2019-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多