Я пытаюсь использовать регулярное выражение для определения данных формата: XX дней, XX часов, XX минут (ожидая минимальных структурных изменений из-за пробелов, запятых и множественных чисел) Я хотел видеть эффективный python для использования регулярного выражения, чтобы я мог получать числа, связанные с днями и минутами.Группы регулярных выражений в python
Я попытался следующий:
matchingTime = "27 days, 21 hours, 23 minutes ago"
re.search('([0-9]{0,2}).*day.* ([0-9]+) .*hour.* ([0-9]+) .*minute.*',matchingTime)
Для вышеописанного случая он отлично работает, и я получаю значение в группе-2-соответственно.
вопрос либо поля не обязательно может присутствовать, скажем
matchingTime = "21 hours, 23 minutes ago"
для вышеприведенного случая он терпит неудачу.
Я знаю, что могу сделать это с помощью проб и исключений, но я надеялся найти краткий и эффективный способ сделать это.
Любые входы будут действительно полезными. Буду рад дать какие-либо дополнительные разъяснения по моему запросу.
EDIT: [0-9]{0,2}
для части дней, просто попробуйте несколько способов решить эту проблему.
Просто поместите не захватные парсеры тогда? вокруг необязательной части ''(:? ([0-9] {0,2}). * день. *)? ([0-9] +). * час. * ([0-9] +). * минута. * '' – Gene
Вы хотите, чтобы дополнительные группы смотрели [необязательная группа захвата python regex] (http://stackoverflow.com/questions/15474741/python-regex-optional-capture-group) – Rod