파이썬 정규 표현식 기본

PythonBeginner
지금 연습하기

소개

마법 세계의 가장 뛰어난 인재들이 마법의 심오한 세계를 탐구하기 위해 모이는 호그와트 마법학교에 오신 것을 환영합니다. 이 복도와 숨겨진 방들 사이에는, 가장 숙련된 마법사조차 당황하게 만드는 도전이 있습니다: Python 정규 표현식 (Regular Expressions) 의 비전 (秘傳) 기술을 마스터하는 것입니다.

이 마법 같은 환경에서, 우리는 가장 복잡하고 강력한 지팡이를 만드는 것으로 알려진 재능 있는 지팡이 장인, 주인공을 만납니다. 이 지팡이들은 단순한 도구가 아니라 고대 마법 세계의 지식과 비밀을 담고 있습니다. 맞춤 제작과 복잡성에 대한 높은 수요를 따라가기 위해, 지팡이 장인은 룬 조각과 마법 주문 구문을 간소화하기 위해 Python 정규 표현식 (Regular Expressions) 에 의존하게 되었습니다.

목표는 명확합니다: Python 정규 표현식 (Regular Expressions) 의 강력한 주문을 배우고 활용하여, 우리 지팡이 장인이 마법 텍스트와 공식을 더욱 효율적으로 정리하고 처리하도록 돕는 것입니다. 이 도전에 맞서 정규 표현식 (Regular Expressions) 마법사가 될 수 있겠습니까?

기본 패턴 이해

이 단계에서는 Python 정규 표현식 (Regular Expressions) 에서 사용되는 기본 패턴을 소개합니다. 올바른 패턴을 사용하면 정확한 주문을 시전하는 것처럼 텍스트를 일치시키고, 검색하고, 필터링할 수 있습니다. 지팡이 디자인에서 간단한 룬 시퀀스를 식별하기 위해 기본적인 정규 표현식을 만드는 연습을 할 것입니다.

~/project 디렉토리에 rune_sequences.py라는 파일을 열고, 주어진 텍스트에서 모든 모음 조합을 찾기 위한 정규 표현식을 작성하는 것으로 시작해 봅시다.

import re

## Sample text with imaginary rune sequences
text = "aeiou aci aeiooo cuii exiovi"

## Regular expression pattern to match all vowel combinations
pattern = r"[aeiou]+"

## Finding all matches using the 'findall' method
matches = re.findall(pattern, text)

print("Vowel combinations found:", matches)

터미널에서 위의 코드를 실행하고 출력을 관찰하십시오.

python rune_sequences.py

예상되는 출력은 다음과 같이 모든 모음 조합을 나열해야 합니다.

Vowel combinations found: ['aeiou', 'a', 'i', 'aeiooo', 'uii', 'e', 'io', 'i']

지팡이 심재 요소 추출

이제 기본적인 패턴 매칭을 마스터했으니, 좀 더 진보된 내용으로 넘어가 봅시다. 지팡이 장인은 목록에서 심재 (core material) 를 추출해야 합니다. 각 지팡이 심재는 복합 단어이며, 일반적으로 마법 생물로 시작하고 마법 물질로 끝납니다.

~/project 디렉토리에 wand_cores.py라는 파일을 열고, 제공된 텍스트에서 지팡이 심재를 일치시키고 나열하기 위한 정규 표현식 패턴을 작성하십시오.

import re

## Text with mixed information, including wand cores
text = "dragonheartstring phoenixfeather unicornhair basiliskvenom trollwhisker"

## Regular expression pattern to match wand cores (compound words)
pattern = r"\b\w+heartstring|\b\w+feather|\b\w+hair|\b\w+venom|\b\w+whisker"

## Finding all matches using the 'findall' method
wand_cores = re.findall(pattern, text)

print("Wand cores extracted:", wand_cores)

위의 코드를 실행하고 지팡이 심재 목록을 확인하십시오.

python wand_cores.py

예상되는 출력은 텍스트에서 발견된 지팡이 심재를 표시해야 합니다.

Wand cores extracted: ['dragonheartstring', 'phoenixfeather', 'unicornhair', 'basiliskvenom', 'trollwhisker']

마법 주문 구문 유효성 검사

마지막 과제로, 지팡이를 마법 부여하는 데 사용되는 구문의 유효성을 검사합니다. 구문은 엄격한 패턴을 따라야 합니다. 즉, 마법 단어로 시작하고, 콜론 (:) 다음에 쉼표로 구분된 일련의 마법 매개변수 또는 주문이 와야 합니다. 유효한 마법 부여 구문은 'Lumos:maxima,solemnly,nova'와 같습니다.

~/project 디렉토리에 enchantment_validator.py를 열고, 정규 표현식을 사용하여 마법 부여 구문 목록의 유효성을 검사하는 함수를 작성하십시오.

import re

def validate_enchantment(phrase):
    ## Regular expression pattern to match valid enchantment phrases
    pattern = r"^[A-Za-z]+:(?:[A-Za-z]+,)*[A-Za-z]+$"
    if re.fullmatch(pattern, phrase):
        return True
    else:
        return False

## List of phrases to validate
phrases = [
    "Lumos:maxima,solemnly,nova",
    "Reducio:shrink,less",
    "Protego:maxima",
    "Alohomora:",
    "Expelliarmus:disarm,fight,duel,"
]

## Validate each phrase
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 Regular Expressions) 의 마법을 마스터하는 여정을 시작했습니다. 룬 시퀀스에서 기본 패턴을 해독하는 것부터 지팡이 심재 추출 및 마법 부여 구문 유효성 검사에 이르기까지, 지팡이 장인을 돕기 위해 기술을 연마했습니다.

이 실습 방식을 통해 텍스트 처리에서 정규 표현식 (regex) 의 강력함과 다재다능함에 대한 더 깊은 이해와 감사를 얻으셨기를 바랍니다. 여러분의 여정은 코딩 레퍼토리를 향상시켰을 뿐만 아니라 정규 표현식 세계에서 파이썬의 마법을 불어넣었습니다.