从String中解析双精度数

时间:2012-03-01 07:50:03

标签: java regex string parsing double

这个问题是this question的延续。问题是正则表达式"[-+]?\\d*\\.?\\d+([eE][-+]?\\d+)?"无法正确找到双打。

例如,输入sdf9.99e.23不包含双打,如果我们有[eE],则必须是[+ - ]或只是[0-9]。

所以我需要在正则表达式中使用某种“if”。在伪代码中,它将是这样的:if(char[i]==(e|E)) then if(char[i+1] == ('+'|'-')) else return null

1 个答案:

答案 0 :(得分:0)

使用心灵感应(预期)扩展你的算法并禁止数字,点,非数字,因为数字我可能会建议这3个正则表达式。在相同的字符串上连续使用它们并联合(concat,append)结果。

"[+-]?\\d+((?![\d.])|$)" // ±digits w/o dot after them (actually, this is integer)
"[+-]?\\d+\\.\\d+((?![\deE])|$)" // ±digits, dot, digit w/o [eE] after them
"[+-]?\\d+\\.\\d+[eE][+-]?\\d+" // full variant: ±digits, dot, digits, "e", ±digits

我尝试了一些方法将它合并到一个正则表达式中,但遗憾的是它不起作用。