使用正则表达式填充整数
我正在使用正则表达式和一个Python框架来给版本号中的特定数字添加零:
10.2.11
我想把第二个部分变成加零的样子,变成这样:
10.02.11
我的正则表达式是这样的:
^(\d{2}\.)(\d{1})([\.].*)
如果我只是简单地返回匹配的部分,我会用这个字符串:
\1\2\3
当我使用我最喜欢的正则表达式测试工具(http://kodos.sourceforge.net/)时,我无法让它给第二部分加零。我试过用 \1\20\3,但这样会把第二个部分当成20,而不是2。
因为我用的这个库,我需要把它写成一行代码。这个库接受一个正则表达式字符串,然后再接受一个用来替换的字符串。
我想我只需要对匹配的部分字符串进行转义,但我搞不清楚怎么做。提前谢谢任何帮助。
4 个回答
1
试试这个:
(^\d(?=\.)|(?<=\.)\d(?=\.)|(?<=\.)\d$)
然后把匹配的部分替换成 0\1
。这样做会让任何数字至少变成两位数。
3
换个完全不同的思路怎么样?
nums = version_string.split('.')
print ".".join("%02d" % int(n) for n in nums)
1
那如果把正则表达式中的.
去掉会怎么样呢?
^(\d{2})\.(\d{1})[\.](.*)
可以用下面的内容替换:
\1.0\2.\3