使用正则表达式填充整数

时间:2009-05-22 20:18:37

标签: python regex

我正在使用带有python框架的正则表达式来填充版本号中的特定数字:

10.2.11

我想将第二个元素转换为零填充,所以它看起来像这样:

11年2月10日

我的正则表达式如下:

^(\d{2}\.)(\d{1})([\.].*)

如果我只是回流匹配的组,我会使用这个字符串:

\1\2\3

当我使用我最喜欢的正则表达式测试工具(http://kodos.sourceforge.net/)时,我无法将其填充到第二组。我试过\ 1 \ 20 \ 3,但是它将第二个引用解释为20,而不是2.

由于我正在使用它的库,我需要它是一个单行。该库采用正则表达式字符串,然后是一个字符串,用于替换它。

我假设我只需要转义匹配的组字符串,但我无法弄明白。提前感谢您的帮助。

4 个答案:

答案 0 :(得分:3)

完全不同的方法怎么样?

nums = version_string.split('.')
print ".".join("%02d" % int(n) for n in nums)

答案 1 :(得分:1)

试试这个:

(^\d(?=\.)|(?<=\.)\d(?=\.)|(?<=\.)\d$)

并将0\1替换为匹配。这将使任何数字长至少两位数。

答案 2 :(得分:1)

如何从正则表达式中删除.

^(\d{2})\.(\d{1})[\.](.*)

替换为:

\1.0\2.\3

答案 3 :(得分:0)

您的图书馆是否支持named groups?这可能会解决您的问题。