Привет, первый пользователь regex здесь. Просто пытаюсь выяснить некоторое регулярное выражение, но вам нужна помощь.
У меня есть текстовый файл со следующими элементами:
10:67 12:12 01:50 23:60 23:50
И я пытаюсь получить список допустимых вывод должен быть:
['12:12', '01: 50 ', '23: 50']
Вот мой код:
import re
inFile = open("text.txt")
text = inFile.read()
pattern = re.findall('([01]\d|2[0-3]):[0-5]\d', text)
print pattern
Мой вывод:
['12', '01', '23']
Любая помощь в выяснении, что случилось? Спасибо!!!
Python, по-видимому, печатает только первую группу (это ([01]\d|2[0-3])
в вашем случае). Если вы создаете группу без захвата ((?: ... )
), вы должны увидеть желаемый результат:
text = '10:67 12:12 01:50 23:60 23:50'
pattern = re.findall('(?:[01]\d|2[0-3]):[0-5]\d', text)
print pattern
отображается:
['12:12', '01:50', '23:50']
Дополнительная информация о (не) захватывающих группах: http://www.regular-expressions.info/brackets.html
findall()
возвращает все группы или, если нет групп, полное совпадение (чтобы увидеть это, добавьте вторую группу за минуты к исходному выражению, и Python вернет кортеж). Отказ от захвата группы - правильный ответ.