gpt4 book ai didi

Java:忽略任何包含小数的数字的正则表达式模式

转载 作者:行者123 更新时间:2023-12-02 13:36:46 26 4
gpt4 key购买 nike

我有一个字符串match = "234 587.094";
我需要使用正则表达式找到字符串中的每个整数。
当与模式匹配时,它应该只返回 234,因为 587.094 不是整数。

这是我到目前为止的模式:

Pattern int_p = "(\\d+[^(\\.?\\d+)])";

最佳答案

你可以尝试这个模式

"\\d+(\\.\\d+)?"

它匹配整数和小数,但是当你找到小数时,你就忽略它。

public static void main(String[] args) throws Exception {
String data = "234 587.094 123 3.4 6";
Matcher matcher = Pattern.compile("\\d+(\\.\\d+)?").matcher(data);
while (matcher.find()) {
if (matcher.group(1) == null) {
System.out.println(matcher.group());
}
}
}

结果:

234
123
6

更新

或者您可以使用具有此模式的 replaceAll() 删除所有十进制数字

"\\d+\\.\\d+"

然后你只剩下可以使用模式 \\d+ 的整数

public static void main(String[] args) throws Exception {
String data = "234 587.094 123 3.4 6 99999.9999 876";

// Remove decimal numbers
data = data.replaceAll("\\d+\\.\\d+", "");

Matcher matcher = Pattern.compile("\\d+").matcher(data);
while (matcher.find()) {
System.out.println(matcher.group());
}
}

结果:

234
123
6
876

关于Java:忽略任何包含小数的数字的正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31373380/

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