Я написал регулярное выражение на Python, которое должно искать сезоны и эпизоды, следующие за числом. Как вы можете видеть в моем коде, у меня есть поддержка всех видов шаблонов, которые ищут то, что я хочу.
import re
episode = re.compile(r"""(?:s|season)(?:\s)(\d+)(?:e|x|episode|\n)(?:\s)(\d+)| # s 01e 02
(?:s|season)(\d+)(?:e|x|episode|\n)(?:\s)(\d+)| # s01e 02
(?:s|season)(?:\s)(\d+)(?:e|x|episode|\n)(\d+)| # s 01e02
(?:s|season)(\d+)(?:e|x|episode|\n)(\d+)| # s01e02
(?:s|season)(\d+)(?:.*)(?:e|x|episode|\n)(\d+)| # s01 random123 e02
(?:s|season)(?:\s)(\d+)(?:.*)(?:e|x|episode|\n)(?:\s)(\d+)| # s 01 random123 e 02
(?:s|season)(?:\s)(\d+)(?:.*)(?:e|x|episode|\n)(\d+)| # s 01 random123 e02
(?:s|season)(\d+)(?:.*)(?:e|x|episode|\n)(?:\s)(\d+) # s01 random123 e 02
""", re.VERBOSE)
test="Hello seinfeld season 01episode 22 foo bar"
match = re.search(episode, test)
print match.group(1), match.group(2)
Следующий код выведет 01 22
, как и ожидалось. Но что, если строка test
будет выглядеть примерно так:
test="Hello seinfeld season 01 episode 22 foo bar"
Как я могу узнать, какую группу использовать? Это означает, что я не знаю, какое значение имеет test
.
РЕДАКТИРОВАТЬ: Может быть, я мог бы проверить все группы на ценность и, если это правда, использовать эту конкретную группу. Но это похоже на неправильный способ сделать это.