我正在尝试从一行文本中解析 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/