Java Regex剥离领先&尾随零空间

时间:2016-07-14 16:29:28

标签: java regex

如下所示的整数字符串,在Java中如何去除前导零和尾随零并使其看起来像:

  • 0 0 1 2 3变为1 2 3
  • 0 -2 4 0 0 0变为-2 4
  • 0 3 0 -4 0 0变为3 0 -4
  • 0 10 9 0 0 20 0变为10 9 0 0 20

1 个答案:

答案 0 :(得分:3)

就我所见,这个正则表达式可以满足您的需求。

string pattern = "^[ 0]*|( |(?<!\d)0)*$";
str.replaceAll(pattern, "");

解释:表达式分为两部分,由第一部分|分隔。第一部分^[ 0]*只是在行/字符串的开头查找0或更多空格或零(^表示行/字符串的开头)。

第二部分( |(?<!\d)0)*$稍微复杂一些,因为一个特殊情况下,一行中的最后一个非零数字以数字零结尾。此部分查找空间或(?<!\d)0的零个或多个出现,这意味着零之前没有数字?<!\d部分称为negative lookbehind。最后是$,表示行尾/字符串。