Проверка, соответствует ли первое «слово» в блоке текста времени использования регулярного выражения в Python

#python

Вопрос:

Я пытаюсь проверить, является ли первое слово в блоке текста временем. Если оно существует, время будет в формате чч: мм.

Я думал, что это слово работает, но оно не распознает время:

 mystring = '17:23 Some text some text some text'
if mystring.split(' ', 1)[0] == '(b[0-2][0-9]:[0-5][0-9]b)':
    print('x')
 

Кто-нибудь может увидеть проблему?

Комментарии:

1. Похоже, вы хотите использовать регулярное выражение, поэтому import re и затем if re.search('(^[0-2][0-9]:[0-5][0-9])', mystring): print('x')

2. == проверяет равенство; он не выполняет сопоставление регулярных выражений.

Ответ №1:

 mystring = '17:23 Some text some text some text'
if mystring.split(' ', 1)[0] == '(b[0-2][0-9]:[0-5][0-9]b)':
    print('x')
 

Здесь вы выполняете сравнение буквальных строк, вам нужно использовать re module для сопоставления регулярных выражений, в этом случае вы можете выполнить
импорт повторно

 import re
mystring = '17:23 Some text some text some text'
if re.match(r'[0-2][0-9]:[0-5][0-9]b', mystring):
    print('x')
 

Обратите внимание, что re.match проверка выполняется только в начале строки (в отличие от re.search ), поэтому предварительная обработка не требуется. Обратите внимание, что я использовал так называемую необработанную строку, чтобы упростить экранирование — для дальнейшего обсуждения см. re Документацию модуля.