На этом шаге мы рассмотрим способы организации такого поиска.
Для поиска первого совпадения с шаблоном предназначены следующие функции и методы:
match (<Строка>[, <Начальная позиция>[, <Конечная позиция>]])
Если соответствие найдено, то возвращается объект Match, в противном случае возвращается значение None. Пример:
Вместо метода match () можно воспользоваться функцией match (). Формат функции:
re.match(<Шаблон>, <Строка>[, <Модификатор>])
В параметре Шаблон указывается строка с регулярным выражением или скомпилированное регулярное выражение. В параметре Модификатор можно указать флаги, используемые в функции compile(). Если соответствие найдено, то возвращается объект Match, в противном случае возвращается значение None. Пример:
search(<Строка>[, <Начальная позиция>[, <Конечная позиция>]])
Если соответствие найдено, то возвращается объект Match, в противном случае возвращается значение None. Пример:
Вместо метода search () можно воспользоваться функцией search (). Формат функции:
re.search (<Шаблон>, <Строка>[, <Модификатор>] )
В параметре Шаблон указывается строка с регулярным выражением или скомпилированное регулярное выражение. В параметре Модификатор можно указать флаги, используемые в функции compile (). Если соответствие найдено, то возвращается объект Match, в противном случае возвращается значение None. Пример:
fullmatch (<Строка> [, <Начальная позиция>[, <Конечная позиция>] ])
Если соответствие найдено, то возвращается объект Match, в противном случае возвращается None. Примеры:
Вместо метода fullmatch () можно воспользоваться функцией fullmatch (). Формат функции:
re.fullmatch(<Шаблон>, <Строка>[, <Модификатор>])
В параметре Шаблон указывается строка с регулярным выражением или скомпилированное регулярное выражение. В параметре Модификатор можно указать флаги, используемые в функции compile (). Если строка полностью совпадает с шаблоном, возвращается объект Match, в противном случае возвращается значение None. Примеры:
В качестве примера переделаем нашу программу (шаг 47) суммирования произвольного количества целых чисел, введенных пользователем, таким образом, чтобы при вводе строки вместо числа программа не завершалась с фатальной ошибкой. Предусмотрим также возможность ввода отрицательных целых чисел.
# -*- coding: utf-8 -*- import re print("Введите слово 'stop' для получения результата") summa = 0 p = re.compile(r"^[-]?[0-9]+$", re.S) while True: x = input("Введите число: ") if x == "stop": break # Выход из цикла if not p.search(x): print("Необходимо ввести число, а не строку!") continue x = int(x) # Преобразуем строку в число summa += x print("Сумма чисел равна: ", summa) input()
Результат работы приложения изображен на рисунке 1:
Рис.1. Результат работы приложения
На следующем шаге мы закончим изучение этого вопроса.