Python простое регулярное выражение справки

1

Привет, первый пользователь 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']

Любая помощь в выяснении, что случилось? Спасибо!!!

Теги:

1 ответ

6
Лучший ответ

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

  • 0
    Ах, хорошо, спасибо.
  • 3
    На самом деле findall() возвращает все группы или, если нет групп, полное совпадение (чтобы увидеть это, добавьте вторую группу за минуты к исходному выражению, и Python вернет кортеж). Отказ от захвата группы - правильный ответ.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню