Python 정규 표현식

PythonBeginner
지금 연습하기

소개

정규 표현식 (regular expression, regex) 은 문자열 작업을 위한 강력한 도구입니다. 다양한 방식으로 텍스트를 검색, 편집 및 조작하는 데 사용할 수 있습니다. 이 랩에서는 Python 에서 정규 표현식을 사용하는 기본 사항을 배우게 됩니다.

성과

  • 정규 표현식 (Regular Expressions)
이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 92%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

Re 모듈 가져오기

Python 에서 정규 표현식을 사용하려면 re 모듈을 가져와야 합니다.

새로운 Python 인터프리터 세션을 열고 다음 코드를 입력하십시오:

python3

Python 스크립트의 맨 위에 다음 줄을 추가하십시오:

import re

정규 표현식 컴파일

문자열에서 패턴을 검색하기 위해 정규 표현식을 사용하기 전에 먼저 컴파일해야 합니다. 정규 표현식을 컴파일하려면 re.compile() 함수를 사용할 수 있습니다.

예를 들어, 다음 코드는 문자열에서 문자 "a"를 검색하는 정규 표현식을 컴파일합니다:

regex = re.compile(r"a")

문자열 앞의 r은 "raw" 문자열임을 나타냅니다. 즉, 백슬래시는 이스케이프 문자가 아닌 리터럴 문자로 처리됩니다. 혼동을 피하기 위해 정규 표현식을 사용할 때는 일반적으로 이 방식을 권장합니다.

search() 메서드 사용

이제 정규 표현식을 컴파일했으므로 search() 메서드를 사용하여 문자열에서 패턴을 검색할 수 있습니다.

예를 들어, 다음 코드는 문자열 "cat"에서 문자 "a"를 검색합니다:

match = regex.search("cat")
print(match) ## Output: <re.Match object; span=(1, 2), match='a'>

search() 메서드는 패턴이 발견되면 Match 객체를 반환하고, 발견되지 않으면 None을 반환합니다.

match() 메서드 사용

match() 메서드는 search() 메서드와 유사하지만, 문자열의 시작 부분에서만 패턴을 일치시킵니다.

예를 들어, 다음 코드는 문자열 "catdog"의 시작 부분에서 패턴 "cat"을 일치시킵니다:

regex = re.compile(r"cat")
match = regex.match("catdog")
print(match) ## Output: <re.Match object; span=(0, 3), match='cat'>

findall() 메서드 사용

findall() 메서드는 문자열에서 패턴의 모든 인스턴스 목록을 반환합니다.

예를 들어, 다음 코드는 문자열 "cat"에서 모든 문자 "a"를 찾습니다:

regex = re.compile(r"a")
matches = regex.findall("cat")
print(matches)  ## Output: ["a"]

더 복잡한 패턴을 일치시키기 위해 정규 표현식에서 사용할 수 있는 많은 특수 문자가 있습니다. 몇 가지 예는 다음과 같습니다:

  • . (dot, 점) 은 모든 단일 문자와 일치합니다.
  • *는 선행 문자가 0 개 이상 일치합니다.
  • +는 선행 문자가 1 개 이상 일치합니다.
  • ?는 선행 문자가 0 개 또는 1 개 일치합니다.
  • [characters]는 대괄호 안의 문자 중 하나와 일치합니다.

그룹 사용

정규 표현식에서 그룹을 사용하여 패턴의 특정 부분을 추출할 수 있습니다. 그룹은 패턴의 일부를 괄호로 묶어 생성됩니다.

예를 들어, 다음 정규 표현식은 "cat"으로 시작하고 "dog"로 끝나는 모든 단어와 일치합니다:

regex = re.compile(r"cat(.*)dog")

그런 다음 Match 객체의 group() 메서드를 사용하여 그룹에 의해 일치된 패턴의 부분을 추출할 수 있습니다. 예를 들어:

match = regex.search("catdog")
print(match.group(1))  ## Output: "" (empty string)

match = regex.search("catfooddog")
print(match.group(1))  ## Output: "food"

sub() 메서드 사용

sub() 메서드를 사용하면 문자열에서 패턴의 모든 인스턴스를 다른 문자열로 바꿀 수 있습니다.

예를 들어, 다음 코드는 문자열 "cat"에서 모든 문자 "a"를 문자 "b"로 바꿉니다:

regex = re.compile(r"a")
new_string = regex.sub("b", "cat")
print(new_string)  ## Output: "cbt"

split() 메서드 사용

split() 메서드를 사용하면 패턴을 기준으로 문자열을 분할할 수 있습니다.

예를 들어, 다음 코드는 문자열 "cat dog"를 공백 문자를 기준으로 분할합니다:

regex = re.compile(r" ")
words = regex.split("cat dog")
print(words)  ## Output: ["cat", "dog"]

Regex101 사용법

Regex101 은 온라인 정규 표현식 테스트 도구로, 선택한 문자열에 대해 정규 표현식을 테스트할 수 있습니다. 정규 표현식의 일치 항목과 오류에 대한 자세한 정보를 제공하므로 정규 표현식을 디버깅하고 개발하는 데 유용한 리소스입니다.

Regex101 을 사용하려면 "Regex" 필드에 정규 표현식을 입력하고 "Test String" 필드에 테스트할 문자열을 입력하면 됩니다. 입력하는 동안 도구는 문자열에서 일치하는 항목을 강조 표시하고 "Result" 섹션에 오류 또는 경고를 표시합니다.

정규 표현식 테스트 외에도 Regex101 은 정규 표현식을 저장하고 공유하는 기능, 일반적인 정규 표현식 패턴 라이브러리, 도구가 일치 항목을 수행하는 방식을 사용자 정의하는 옵션 등 다양한 유용한 기능을 포함합니다.

전반적으로 Regex101 은 Python 또는 다른 프로그래밍 언어에서 정규 표현식을 사용하는 모든 사람에게 유용한 도구입니다.

요약

이 랩에서는 Python 에서 정규 표현식을 사용하여 문자열을 검색, 일치시키고 조작하는 방법을 배웠습니다. 정규 표현식을 컴파일하는 방법, search(), match(), findall(), sub()와 같은 다양한 메서드를 사용하는 방법, 특수 문자 및 그룹을 사용하여 더 복잡한 패턴을 일치시키는 방법을 배웠습니다.

도움이 되었기를 바랍니다! 궁금한 점이 있으면 알려주세요.