我有字符串1234567890,我想将其格式化为1234 5678 90
我写这个正则表达式:
$str =~ s/(.{4})/$1 /g;
但对于这种情况12345678这不起作用.我最后得到了多余的空格:
>>1234 5678 <<
我试着用lookahead重写正则表达式:
s/((?:.{4})?=.)/$1 /g;
如何重写正则表达式来修复这种情况?
解决方法
只需使用解压缩
use strict; use warnings 'all'; for ( qw/ 12345678 1234567890 / ) { printf ">>%s<<\n",join ' ',unpack '(A4)*'; }
产量
>>1234 5678<< >>1234 5678 90<<