Java:用于解析正负 double 的正则表达式

标签 java regex

我正在尝试从一行文本中解析 double 。我发现了几行我认为正在做我想做的事情的代码。但是,我发现它不会解析负 double (只会将它们解析为正数)。我对正则表达式完全陌生,它有点令人不知所措。我想知道是否有人可以解释下面的代码并告诉我每个部分的含义,以及如何修改它以便它能够解析正 double 和负 double ?提前致谢!

double nextDouble;
Matcher matcher = Pattern.compile("(?!=\\d\\.\\d\\.)([\\d.]+)").matcher(line);
if (matcher.find()) nextDouble = Double.parseDouble(matcher.group(1)));

编辑:这是一行的示例。 “104.44518717、34.09785265、103.39288764、0.09813121、0.00000000、-0.46612322、4.68576504”

它将 -0.46612322 解析为 0.46612322。

最佳答案

您的表达式有两个部分。

括号中的第一部分是确保匹配字符串前面没有数字 和点。不知道为什么您需要该部件,如果您提供有帮助的示例线。

括号中的第二部分是匹配部分。这只是说匹配 1 个或多个数字和点。

如果您想让表达式使用负数,您只需将“-”字符添加到匹配集中即可。

(?!=\\d-\\.)([-\\d\\.]+) 

但是这个以及你的表达式将匹配具有多个点(点)的字符串。例如122.12.12

所以我建议您尝试以下操作。请注意,我删除了第一部分。

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

关于Java:用于解析正负 double 的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14380153/

相关文章:

java - 使用 NetBeans IDE 在 JDK 9 中遇到问题 "file should be on source path, or on patch path for module"

java - 是否有一种读取输入的方法被认为比扫描仪类更多 "professional"?

java - 为 Web 应用程序构建版本号 [war]?

java - 使用 jsoup 从其他 div/id 类中的类中提取 href

php - 使用 preg_match 检查字符串的结构

python - 我怎样才能让 Spacy 停止将带连字符的数字和单词拆分成单独的标记?

java - 使用没有 FXML 的 JavaFX Controller

python - 使用 regex sub (Python) 复制字符串中的数字

java - 如何在 java 中将 [10] 替换为 {ref10}

c# - 使用 RegEx 拆分链接