实际上,Python正则表达式库已经提供了您所要求的常规功能。您只需要稍微更改模式的语法
>>> import re
>>> from operator import itemgetter
>>> mystr='Version 1.15.6\n'
>>> m = re.match('Version (?P<_0>.+)\.(?P<_1>.+)\.(?P<_2>.+)', mystr)
>>> map(itemgetter(1), sorted(m.groupdict().items()))
['1', '15', '6']
如您所见,您必须将(un)格式字符串从{0}更改为(?P <_0>。+)。您甚至可以要求带(?P <_0> \ d +)的小数。另外,您必须转义某些字符以防止它们被解释为正则表达式特殊字符。但这可以再次自动化,例如
>>> re.sub(r'\\{(\d+)\\}', r'(?P<_\1>.+)', re.escape('Version {0}.{1}.{2}'))
'Version\\ (?P<_0>.+)\\.(?P<_1>.+)\\.(?P<_2>.+)'