代码之家  ›  专栏  ›  技术社区  ›  Ali Tor

如何匹配正则表达式中数字末尾等于0的十进制数字?

  •  0
  • Ali Tor  · 技术社区  · 5 年前

    12.009000应与“000”匹配

    A quantifier inside a lookbehind makes it non-fixed width 我找不到任何解决办法。成功匹配的正确模式是什么?

    图案 : (?<=\.[0-9]*)0+$

    0 回复  |  直到 5 年前
        1
  •  1
  •   WJS    5 年前

    使用Java,您可以这样做。

    • (\\d)
    • 后跟0
    • $1 是对捕获组的反向引用
        str = str.replaceAll("(\\.\\d+?)0+$","$1");
        System.out.println(str);
    

        2
  •  1
  •   Victor Wang    5 年前
       (\d+[.]?\d*?)0*$
       One more step is needed to replace the dot for numbers such as 12.000
    

    单击此处进行演示: Click Here

       (?:(\d+)\.0*$)|(?:(\d+[.]?\d*?)0*$)
    

    单击此处进行演示: Click Here

        3
  •  0
  •   Community CDub    4 年前

    这里是 my attempt

    (?:[.][0-9]*[1-9])(0+)$|([.]0+$)
    

    这假设输入字符串实际上是一个数字(它不会保护像xyz.001这样的东西)。如果小数点后没有尾随的零,则完全不匹配;如果有,则删除:

    1. 顺序 0 前面有一个 [1-9] [.][0-9]*

    1. [.] 接着是一连串的 0 s。

      如果正则表达式匹配,结果将始终在捕获的组中。

        4
  •  -2
  •   J Banana    5 年前
    ([\d.]+?)(0*)
    

    第一组是数字。第2组是尾随的零。