gpt4 book ai didi

java - 正则表达式从文件中检索双数字,但忽略具有多个点的数字

转载 作者:行者123 更新时间:2023-12-01 23:59:26 25 4
gpt4 key购买 nike

检索文件中的所有双数并返回总和,但避免使用多个点的值。

测试用例:

在文件中

12.3,123.45,19,2.16.8.1.1

输出

预期输出 -> 154.75我的输出 -> 166.01

-?\\d+\\.?\\d* 这将检索所有双数字,但无法忽略带有多个点的数字。

FileReader reader = new FileReader(filename);
BufferedReader in = new BufferedReader(reader);
String line;

while ((line = in.readLine()) != null) {
Pattern pattern = Pattern.compile("-?\\d+\\.?\\d*");
Matcher matcher = pattern.matcher(line);
while (matcher.find()) {
String x = matcher.group(0);
y = Double.parseDouble(x);
sum = sum + y;
}
}

预期输出 -> 154.75 我的输出 -> 166.01

最佳答案

您可以使用

-?(?<!\d)(?<!\d\.)\d*\.?\d+(?!\.?\d)

如果不需要匹配可选-前面的,去掉就可以了。

请参阅regex demo

详细信息

  • -? - 可选的连字符
  • (?<!\d)(?<!\d\.) - 紧靠左侧,不应有数字或数字+ .
  • \d* - 0+ 位数字
  • \.? - 可选点
  • \d+ - 1+ 位数字
  • (?!\.?\d) - 紧靠右边,不能有数字或 . + 数字。

在 Java 中,使用:

Pattern pattern = Pattern.compile("-?(?<!\\d)(?<!\\d\\.)\\d*\\.?\\d+(?!\\.?\\d)");

关于java - 正则表达式从文件中检索双数字,但忽略具有多个点的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58186010/

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