hpi*_*que 27 regex language-agnostic
我想在字符串的所有数字中添加一定数量的前导零(最多3个).例如:
输入: /2009/5/song 01 of 12
输出: /2009/0005/song 0001 of 0012
使用正则表达式执行此操作的最佳方法是什么?
编辑:
我选了第一个正确答案.但是,所有答案都值得一读.
Sno*_*are 29
在Perl中:
s/([0-9]+)/sprintf('%04d',$1)/ge;
Run Code Online (Sandbox Code Playgroud)
使用支持回调的内容,以便处理匹配:
>>> r=re.compile(r'(?:^|(?<=[^0-9]))([0-9]{1,3})(?=$|[^0-9])')
>>> r.sub(lambda x: '%04d' % (int(x.group(1)),), 'dfbg345gf345', sys.maxint)
'dfbg0345gf0345'
>>> r.sub(lambda x: '%04d' % (int(x.group(1)),), '1x11x111x', sys.maxint)
'0001x0011x0111x'
>>> r.sub(lambda x: '%04d' % (int(x.group(1)),), 'x1x11x111x', sys.maxint)
'x0001x0011x0111x'
Run Code Online (Sandbox Code Playgroud)