正则表达式:匹配一个没有初始零且没有最后两个零的字符串

时间:2017-12-15 19:55:02

标签: java regex

我试过像[1-9] [0-9] + [^(00)]这样的东西。但它没有部分发挥作用。

以下是一个例子:

  • 输入:000000001321054000456400
  • 输出:13210540004564

  • 输入:0000000013210540004564000

  • 输出:132105400045640

  • 输入:0000000013210540004564

  • 输出:13210540004564

请您提供解决方案的说明。

1 个答案:

答案 0 :(得分:3)

您可以使用

s = s.replaceFirst("^0*([1-9]\\d*?)(?:00)?$", "$1");

请参阅regex demo

<强>详情

  • ^ - 字符串开头
  • 0* - 领先0 s
  • ([1-9]\\d*?) - 第1组(后来用替换模式中的$1引用):从19的数字,然后是0到0之间的任何数字可能(延迟量词使下一个可选模式能够在字符串中的适当位置进行尝试)
  • (?:00)? - 可选的00子字符串
  • $ - 字符串结束。