gpt4 book ai didi

java - 正则表达式从单个组中的 java 字符串中查找整数或小数?

转载 作者:搜寻专家 更新时间:2023-10-31 08:19:40 25 4
gpt4 key购买 nike

我在这个示例字符串上尝试 (\d+|\d+\.\d+):

Oats     124   0.99        V    1.65

但是当我在 Java 中使用模式匹配器类时,它会在不同的组中给出十进制数。

我希望我的答案在一个小组中。

最佳答案

您不需要为整数和 float 设置单独的模式。只需将小数部分设为可选,您就可以从一个组中获得两种类型的数字。

(\d+(?:\.\d+)?)

使用上述模式并从组索引 1 中获取数字。

DEMO

代码:

String s = "Oats     124   0.99        V    1.65";
Pattern regex = Pattern.compile("(\\d+(?:\\.\\d+)?)");
Matcher matcher = regex.matcher(s);
while(matcher.find()){
System.out.println(matcher.group(1));
}

输出:

124
0.99
1.65

图案解释:

  • () capturing group .
  • \d+ 匹配一位或多位数字。
  • (?:) Non-capturing group.
  • (?:\.\d+)? 匹配一个点和后面的一个或多个数字。 ? 在非捕获组之后使整个非捕获组成为可选的。

只有当您更改模式的顺序时,您的正则表达式才会起作用。

(\d+\.\d+|\d+)

DEMO

关于java - 正则表达式从单个组中的 java 字符串中查找整数或小数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25707779/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com