如何在java中格式化字符串"012df3g4h5j6 78"=>"01 23 45 67 8"

db1*_*975 2 java regex format replace numbers

我想格式化带有数字和其他字符的字符串:示例:

输入=>输出

  • "012df3g4h5j6 78"=>"01 23 45 67 8"
  • "012df3g4h5j6 7"=>"01 23 45 67"
  • "012 3 45 6 78"=>"01 23 45 67 8"
  • "012 3 45 6"=>"01 23 45 6"

我只有数字的解决方案:

  • "012345678"=>"01 23 45 67 8"
  • "01234567"=>"01 23 45 67"
  • "01234567"=>"01 23 45 67"

regexp ="(?= [0-9] {2})(([0-9]){2})"

replacement ="$ 1"

Tim*_*007 5

试试这个

(\D*)(\d)(?:(\n)|(\D*)(\d)(\n?))
Run Code Online (Sandbox Code Playgroud)

正则表达式演示

要么

(\D*)(\d)(?:(\n|$)|(\D*)(\d)((?:\n|$)?))
Run Code Online (Sandbox Code Playgroud)

演示

说明::
( … )捕获组样本
\:转义特殊字符样本
*:零次或多次采样
(?: … ):非捕获组样本
|:交替/或操作数样本
?:一次或无样本

输入:

012df3g4h5j6 78
012df3g4h5j6 7
012 3 45 6 78
012 3 45 6
012345678
01234567
01234567
Run Code Online (Sandbox Code Playgroud)

产量

01 23 45 67 8 
01 23 45 67 
01 23 45 67 8 
01 23 45 6 
01 23 45 67 8 
01 23 45 67 
01 23 45 67 
Run Code Online (Sandbox Code Playgroud)