#python #regex
#python #регулярное выражение
Вопрос:
Я ищу регулярное выражение, способное различать подстроки в запросе. Практическим примером может быть запрос к базе данных фильмов, целью которого является возврат результатов:
# query 1
title:movie one year:2018 rating:10
# query 2
year:2019 rating:20
Для первого примера я хочу, чтобы регулярное выражение могло идентифицировать название, год и рейтинг, который является фильмом номер один, 2018 и 10 соответственно.
Я достиг решения, которое близко, но не полностью удовлетворяет требованиям:
title:w
year:w
rating:w
Это работает для запросов, состоящих из отдельных слов (например, title: movie), но не работает для запросов с несколькими объектами (например, title: movie one). Есть ли способ, которым я могу это выполнить?
Ответ №1:
Вы могли бы использовать группы без захвата для сопоставления «меток», а затем использовать группы захвата для сопоставления всех символов между метками (вместо просто символов word, чтобы вы захватывали пробелы и т.д.). Например:
import re
s = 'title:movie one year:2018 rating:10'
matches = re.match(r'(?:title:)(.*)?(?:year:)(.*)?(?:rating:)(.*)?', s).groups()
print(matches)
# ('movie one ', '2018 ', '10')
Ответ №2:
Что-то вроде этого?
import re
string='Movie One'
pattern='[ws]*'
result=re.match(pattern,string)
print(result)
Результат:
<_sre.SRE_Match object; span=(0, 9), match='Movie One'>
Комментарии:
1. Я не думаю, что вы поняли задачу
2. Я отвечал на эту строку: «Это работает для запросов, состоящих из отдельных слов (например, название: фильм), но не работает для запросов с несколькими объектами (например, название: фильм первый). Есть ли способ, которым я могу это выполнить?»