(\\d+(\\.\\d*)?);  (\\d+(\\.\\d+)?); (\\d+\\.?\\d+); 中三个不同?为什么导致了三种不同结果, 谁能解释一下?

解决方案 »

  1.   

    String regEx = "[+|-]?(\\d+(\\.\\d+)?)|(\\.\\d+)";  //输出是:“3”[+|-]? 是指+ 或- 其中有一个或0个...
    []  代表一个字符....
    |   代表或
    ?    代表前面内容出现一次或0次...
    (\\d+(\\.\\d+)?)|(\\.\\d+) 代表是符点数或整数 或点后面一个整数
    ()     里面是一个整体.一般都是一个字符串
    \\d    代表数字
    +     代表出现一次或多次.....
    \\.   代表一个小数点"[+|-]?(\\d+(\\.\\d+)?)|(\\.\\d+) 从整体看.....这个匹配的主要是(\\d+(\\.\\d+)?)
    前央[+|-]是可有可无的...后面又是个或....
    而这一问分中(\\.\\d+)?又是可无的..所以只要和\\d+ 匹配就行了...
    第一个就这样分析..以后的你自己分析吧 
      

  2.   

    对于[+|-]?(\\d+(\\.\\d+)?)|(\\.\\d+),关心的是(\\.\\d+)部分,它表达的意思是如果出现了.,那么后面要跟至少一个数字,从而
        3匹配,而3.不匹配
        对于[+|-]?(\\d+(\\.\\d*)?)|(\\.\\d+),来看(\\.\\d*)==>如果出现了.,那么不必出现任何数字==>3.匹配(当然,3也是匹配的,
        不过Regex使用的是贪婪匹配)
        对于[+|-]?(\\d+\\.?\\d+)|(\\.\\d+),很显然,3是不能完成匹配的.
        
        ps:这可能是你要的:
        [+-]?(\\d+(\\.\\d+)?|\\.\\d+)