给定一个包含此字符串的字符串:
Count %
===========
00000 000%
00012 001%
00905 099%
我希望它看起来像这样:
Count %
===========
0 0%
12 1%
905 99%
我能得到的最接近的是:
Count %
===========
%
12 1%
905 99%
使用此代码:
strv.replaceAll("\\b0+", " ")
答案 0 :(得分:4)
由于您希望按原样维护空间,因此必须单独匹配每个0
,然后替换为空格:' '。看看这个正则表达式:
(?<=\b|\G)0(?=\d)
(?<=\b|\G)
是一个积极的外观,可确保匹配的0
前面有\b
或\G
\b
表示单词边界,表示\b0
将有助于匹配第一个零\G
有助于在上一场比赛结束时(在前一场比赛之后)确定位置。所以它将有助于匹配下一个零等等。因此,仅形成0
的连续链。 \b
开头,因此无法为10000
形成链条,因为单词边界\b
位于1
之前,而不是0
1}} (?=\d)
,因为如果输入只包含零,那么我们需要留下一个零。这个正向前瞻告诉引擎匹配所有零,后跟一个数字。因此,如果输入为0000
,则正则表达式将匹配前3个0
,因为最后一个不是后跟数字。用法
strv.replaceAll("(?<=\\b|\\G)0(?=\\d)", " ")
编辑:根据@ SebastianProske的建议进行更新。谢谢!