Введение
Добро пожаловать в Школу Чародейства и Волшебства Хогвартс, где собираются самые яркие умы в магческом мире, чтобы углубиться в глубины чародейства. Среди этих коридоров и скрытых камер находится вызов, который даже для самых опытных волшебников оказывается головокружительным: овладеть таинственным искусством регулярных выражений на Python.
В этом зачарованном окружении мы встречаем нашего protagonista, талантливого мастеру изготовления волшебных палочек, известного тем, что создает самые сложные и мощные палочки. Эти палочки не просто инструменты, они несут в себе легенды и секреты древнего магческого мира. Чтобы соответствовать высоким требованиям по настройке и сложности, мастер палочек обратился к регулярным выражениям на Python, чтобы упростить процесс вырезания рун и заклинательных фраз.
Цель очевидна: изучить и применить мощные заклинания регулярных выражений на Python, чтобы помочь нашему мастеру палочек более эффективно организовать и обработать магические тексты и формулы. Вы сможете ли встать на этот вызов и стать волшебником регулярных выражений?
Понять базовые шаблоны
В этом шаге вы познакомитесь с базовыми шаблонами, используемыми в регулярных выражениях на Python. С помощью правильного шаблона вы сможете сопоставлять, искать и фильтровать текст, точно так же, как прикладывая точное заклинание. Вы будете практиковать создание базового регулярного выражения для идентификации простых последовательностей рун в дизайнах палочек.
Давайте начнем с открытия файла с именем rune_sequences.py в директории ~/project и напишем регулярное выражение для поиска всех комбинаций гласных в заданном тексте.
import re
## Пример текста с вымышленными последовательностями рун
text = "aeiou aci aeiooo cuii exiovi"
## Шаблон регулярного выражения для сопоставления всех комбинаций гласных
pattern = r"[aeiou]+"
## Поиск всех совпадений с использованием метода 'findall'
matches = re.findall(pattern, text)
print("Найденные комбинации гласных:", matches)
Запустите вышеприведенный код в терминале и изучите вывод.
python rune_sequences.py
Ожидаемый вывод должен перечислять все комбинации гласных, как показано ниже:
Найденные комбинации гласных: ['aeiou', 'a', 'i', 'aeiooo', 'uii', 'e', 'io', 'i']
Извлечение элементов ядра палочки
Теперь, когда вы освоили базовое сопоставление шаблонов, перейдем к более сложному. Мастеру палочек нужно извлечь основные материалы из списка. Каждый ядро палочки - это сложное слово, обычно префиксом которого является магическое существо, а суффиксом - магическое вещество.
Откройте файл с именем wand_cores.py в директории ~/project и напишите регулярное выражение для сопоставления и перечисления ядер палочек из предоставленного текста.
import re
## Текст с смешанными данными, включая ядра палочек
text = "dragonheartstring phoenixfeather unicornhair basiliskvenom trollwhisker"
## Шаблон регулярного выражения для сопоставления ядер палочек (сложных слов)
pattern = r"\b\w+heartstring|\b\w+feather|\b\w+hair|\b\w+venom|\b\w+whisker"
## Поиск всех совпадений с использованием метода 'findall'
wand_cores = re.findall(pattern, text)
print("Извлеченные ядра палочек:", wand_cores)
Запустите вышеприведенный код и проверьте список ядер палочек.
python wand_cores.py
Ожидаемый вывод должен показать найденные в тексте ядра палочек:
Извлеченные ядра палочек: ['dragonheartstring', 'phoenixfeather', 'unicornhair', 'basiliskvenom', 'trollwhisker']
Проверить правильность заклинательных фраз
В качестве заключительного испытания мы проверим правильность фраз, используемых для наложения чар на палочки. Фразы должны соответствовать строгому шаблону: они должны начинаться с магического слова, за которым следует двоеточие, а затем идут серией запятыми разделенных магических параметров или заклинаний. Правильная заклинательная фраза выглядит так: 'Lumos:maxima,solemnly,nova'.
Откройте enchantment_validator.py в директории ~/project и напишите функцию, которая использует регулярное выражение для проверки списка заклинательных фраз.
import re
def validate_enchantment(phrase):
## Шаблон регулярного выражения для сопоставления правильных заклинательных фраз
pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
if re.fullmatch(pattern, phrase):
return True
else:
return False
## Список фраз для проверки
phrases = [
"Lumos:maxima,solemnly,nova",
"Reducio:shrink,less",
"Protego:maxima",
"Alohomora:",
"Expelliarmus:disarm,fight,duel,"
]
## Проверка каждой фразы
for phrase in phrases:
result = validate_enchantment(phrase)
print(f"'{phrase}' is {'valid' if result else 'invalid'}")
Запустите код и проверьте результаты проверки.
python enchantment_validator.py
Ожидаемый вывод должен показать, какие фразы правильные:
'Lumos:maxima,solemnly,nova' is valid
'Reducio:shrink,less' is valid
'Protego:maxima' is valid
'Alohomora:' is invalid
'Expelliarmus:disarm,fight,duel,' is invalid
Резюме
В этом практическом занятии вы отправились в волшебное путешествие по Школе Чародейства и Волшебства Хогвартс, чтобы овладеть заклинаниями регулярных выражений на Python. От разгадки базовых шаблонов в последовательностях рун до извлечения ядер палочек и проверки правильности заклинательных фраз, вы отточнили свои навыки, чтобы помочь мастеру палочек.
Надеемся, что благодаря этому практическому подходу вы приобрели более глубокое понимание и оценку силы и гибкости регулярных выражений при обработке текста. Ваш путь не только расширил ваш арсенал навыков программирования, но и наделил вас магией Python в мире регулярных выражений.



