使用正则表达式填充整数

1 投票
4 回答
3344 浏览
提问于 2025-04-15 11:47

我正在使用正则表达式和一个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

撰写回答