什么是处理浮点数的好的正则表达式(就像
Java的浮点数)
答案必须符合以下目标:
1) 1. 2) .2 3) 3.14 4) 5e6 5) 5e-6 6) 5E+6 7) 7.e8 8) 9.0E-10 9) .11e12
总之,应该
>忽略前面的标志
>要求小数点左边的第一个字符不为零
>允许小数点两边的0或更多位数字
>允许没有小数点的数字
>允许科学符号
允许资本或小写字母’e’
>允许正数或负数指数
对于那些想知道的人,是的,这是一个家庭作业的问题.我们在我的毕业生CS课程中收到了作为编译器的作业.我已经把课程的答案转过来了,并将其作为这个问题的答案.
[结语]
我的解决方案没有得到完整的信用,因为它没有处理小数点左边的多个1位数字.尽管没有一个示例在十进制左边的位置不超过1位,但是这个赋值确实提到处理Java浮点数.我会在自己的帖子中发布接受的答案.
只需使小数点和E指数指数部分可选:
[1-9][0-9]*\.?[0-9]*([Ee][+-]?[0-9]+)?
我不明白你为什么不想领导[ – ]?捕捉可能的标志,但是,无论如何! – )
编辑:实际上可能没有小数点左边的数字(在这种情况下,我想象必须有小数点和1位数字后)!所以显然需要一个垂直条(替代):
(([1-9][0-9]*\.?[0-9]*)|(\.[0-9]+))([Ee][+-]?[0-9]+)?