프로그래밍 언어/Python

내가 보려고 정리한 파이썬 함수: 정규표현식 (match() / search() / sub() / split())

gamjadori 2024. 2. 16. 18:20
728x90

정규 표현식(re)
문자열을 검색, 추출, 대체하는데 사용되는 강력한 도구

  1. 기본 패턴:
    • ^: 문자열의 시작과 매치
    • $: 문자열의 끝과 매치
  2. 문자 클래스:
    • []: 대괄호 안에 있는 어떤 문자와도 매치
      • 예: [abc]는 'a', 'b', 'c' 중 하나와 매치
  3. 반복:
    • *: 패턴이 0번 이상 반복
    • +: 패턴이 1번 이상 반복
    • ?: 0 또는 1번의 패턴 발생
  4. 특수 문자:
    • \: 다음에 오는 특수문자를 일반 문자로 취급
      • 예: \.는 실제 '.' 문자와 매치
  5. 특수 문자 클래스:
    • \d: 숫자와 매치
    • \D: 숫자가 아닌 것과 매치
    • \w: 숫자 또는 문자와 매치
    • \W: 숫자 또는 문자가 아닌 것과 매치
    • \s: 공백 문자와 매치
    • \S: 공백이 아닌 문자와 매치.
  6. 그룹:
    • (): 그룹을 지정하여 그룹 단위로 매치를 수행
      • 예: (abc)+는 'abc', 'abcabc', 등과 매치

<사용 방법>

  • re 모듈을 사용하기 위해 import를 삽입 > import re

1. search(): 문자열 전체에서 패턴과 매치되는 부분을 찾음

>>> import re
>>> hello = 'Hello world!!'
>>> print(re.search('^Hello', hello))
>> hello에서 Hello로 시작하는 문자열을 찾아줘.
<re.Match object; span=(0, 5), match='Hello'>

2. match(): 문자열의 시작부터 패턴과 매치되는지 확인

>>> print(re.match('hello|world', 'hello'))
>> 'hello에서 hello 또는 world 있는지 찾아줘.
<re.Match object; span=(0, 5), match='hello'>

** re.search 는 주어진 문장 전체에서 맞는 패턴을 찾아내고, re.match는 주어진 문장의 시작부분부터 비교를 시작한다.

>> 따라서, re.match() 에서는 여러 부분에서 패턴이 일치해도, 왼쪽에서 가장 먼저 만나게 되는 부분을 반환

 

3. sub(): 패턴과 매치되는 부분을 다른 문자열로 대체

>>> print(re.sub('apple|orange', 'fruit', 'apple box orange tree'))
fruit box fruit tree
'apple box orange tree'을 대상으로 하여 apple이나 orange를 fruit으로 교체해라
** sub(찾을 패턴, 대체할 문자, 대상): 문자열 바꾸기 교체 함수

4. split(): 정규표현 패턴으로 문자열을 분할

>>> print('apple pear grape pineapple orange'.split())
['apple', 'pear', 'grape', 'pineapple', 'orange']
** ''.split(): 하나의 문자열을 일정한 기준으로 잘라서 개별의 리스트 요소로 만드는 함수
		자르는 기준은 괄호 안에 있는 것