Как получить группу захвата, которая никогда не существует?
У меня есть регулярное выражение, вроде
(\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"