Java:解析正面和负面双打的正则表达式

时间:2013-01-17 13:26:42

标签: java regex

我正在尝试从一行文本中解析双打。我发现几行代码我认为正在做我想要的。但是,我发现它不会解析负面的双打(只会将它们解析为正面)。我对正则表达式来说是全新的,它有点压倒性的。我想知道是否有人可以解释下面的代码并告诉我每个部分的含义,以及我将如何修改它以便解析正面和负面的双打?提前谢谢!

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。

3 个答案:

答案 0 :(得分:2)

你的表达有两个部分。

括号中的第一部分是确保匹配的字符串前面没有数字 和点。如果你提供一个有用的样品线,不知道为什么你需要那个部分。

支架的第二部分是匹配部分。这只是说匹配1个或更多的数字和点。

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

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

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

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

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

答案 1 :(得分:1)

尝试使用以下正则表达式:

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

答案 2 :(得分:0)

试试这个:

"((\\d+\\.?\\d*)|(\\.\\d+))(([Ee][+-]?)?\\d+)?"