Как получить группу захвата, которая никогда не существует?

У меня есть регулярное выражение, вроде

(\d\d\d)(\d\d\d)(\.\d\d){0,1}

когда он сопоставляется, я могу легко получить первые две группы, но как проверить, произошло ли третье событие 0 или 1 раз.

Еще один второстепенный вопрос: в (\.\d\d) мне больше всего нужна часть \d\d, любой другой способ сообщить регулярному выражению, что \.\d\d должно появиться 0 или 1 раз, но я хочу только \d\d часть?

Это было основано на проблеме разбора a

ччммсс

которая имеет необязательную десятичную часть в секундах (так что она становится

hhmmss.ss

)... Я поставил \d\d\d в вопрос, так что ясно, о чем \d\d я говорю.

Ответ 1

import re

value = "123456.33"

regex = re.search("^(\d\d\d)(\d\d\d)(?:\.(\d\d)){0,1}$", value)

if regex:
    print regex.group(1)
    print regex.group(2)
    if regex.group(3) is None:
        print regex.group(3)
    else:
        print "3rd group not found"
else:
    print "value don't match regex"