首页 > 解决方案 > Java Regex 获取所有数字

问题描述

我需要从字符串中检索所有数字,例如:

"a: 1 | b=2 ; c=3.2 / d=4,2"

我想得到这个结果:

所以,我不知道在 Java 的 Regex 中怎么说。

实际上,我有这个:

(?<=\D)(?=\d)|(?<=\d)(?=\D)

他拆分字母和数字(但不尊重双精度值),结果是:

你能帮助我吗 ?

感谢:D

标签: javaregex

解决方案


您可以使用具有字符类的捕获组:

[a-z][:=]\h*(\d+(?:[.,]\d+)?)

解释

  • [a-z]单词边界,匹配一个 char az
  • [:=]匹配:=
  • \h*匹配 0+ 个水平空白字符
  • (捕获组 1
    • \d+(?:[.,]\d+)?将 1+ 位数字与可选的小数部分匹配为.or,
  • )关闭组

正则表达式演示| Java 演示

例如

String regex = "[a-z][:=]\\h*(\\d+(?:[.,]\\d+)?)";
String string = "a: 1 | b=2 ; c=3.2 / d=4,2";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(string);

while (matcher.find()) {
    System.out.println(matcher.group(1));
}

输出

1
2
3.2
4,2

推荐阅读