Основы регулярных выражений в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

Добро пожаловать в Школу Чародейства и Волшебства Хогвартс, где собираются самые яркие умы в магческом мире, чтобы углубиться в глубины чародейства. Среди этих коридоров и скрытых камер находится вызов, который даже для самых опытных волшебников оказывается головокружительным: овладеть таинственным искусством регулярных выражений на Python.

В этом зачарованном окружении мы встречаем нашего protagonista, талантливого мастеру изготовления волшебных палочек, известного тем, что создает самые сложные и мощные палочки. Эти палочки не просто инструменты, они несут в себе легенды и секреты древнего магческого мира. Чтобы соответствовать высоким требованиям по настройке и сложности, мастер палочек обратился к регулярным выражениям на Python, чтобы упростить процесс вырезания рун и заклинательных фраз.

Цель очевидна: изучить и применить мощные заклинания регулярных выражений на Python, чтобы помочь нашему мастеру палочек более эффективно организовать и обработать магические тексты и формулы. Вы сможете ли встать на этот вызов и стать волшебником регулярных выражений?


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/AdvancedTopicsGroup -.-> python/regular_expressions("Regular Expressions") subgraph Lab Skills python/regular_expressions -.-> lab-271586{{"Основы регулярных выражений в Python"}} end

Изучите базовые шаблоны

В этом шаге вы познакомитесь с базовыми шаблонами, используемыми в регулярных выражениях на 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 в мире регулярных выражений.