Python

파이썬[Python] 정규식 문자열 치환(re.sub)

철쓰S2 2022. 7. 4. 20:07

정규식 표현

  • ^ : 문자열의 시작을 의미 또는 not
  • $ : 문자열의 끝을 의미
  • | : or
  • * : 0회 이상 반복
  • + : 1회 이상 반복
  • ? : 0회 또는 1회 반복
  • [] : 문자열의 집합
    예시
    [abc] : a또는 b또는 c중 하나
    [a-z] : a부터 z까지
    [^a] : a를 제외한 모든 문자
  • () : 어떤 정규식을 하나의 그룹으로 묶음
  • {n} : 앞의 문자가 n회 반복
  • {m,n} : 앞의 문자가 m회 이상 n회 반복
  • {m,} : 앞의 문자가 m회 이상 반복
  • \w : 문자+숫자(alphanumeric)와 매치, [a-zA-Z0-9_]와 동일한 표현식이다.
  • \W : 문자+숫자(alphanumeric)가 아닌 문자와 매치, [^a-zA-Z0-9_]와 동일한 표현식이다.
  • \d : 숫자와 매치, [0-9]와 동일한 표현식이다.
  • \D : 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식이다.
  • \b : 단어의 시작과 끝에 존재하는 공백
  • \B : 단어의 시작과 끝 외에 존재하는 공백
  • . : 줄바꿈 문자인 \n을 제외한 모든 문자와 매치됨을 의미한다. (ex. a.b)

 

re.sub(정규 표현식, 대상 문자열 , 치환 문자)

정규 표현식 - 검색 패턴을 지정
대상 문자열 - 검색 대상이 되는 문자열
치환 문자 - 변경하고 싶은 문자

re.sub('apple|orange', 'fruit', 'apple box orange tree')    # apple 또는 orange를 fruit로 바꿈
'fruit box fruit tree'
re.sub('[0-9]+', 'n', '1 2 Fizz 4 Buzz Fizz 7 8')    # 숫자만 찾아서 n으로 바꿈
'n n Fizz n Buzz Fizz n n'
def multiple10(m):        # 매개변수로 매치 객체를 받음
n = int(m.group())    # 매칭된 문자열을 가져와서 정수로 변환
return str(n * 10)    # 숫자에 10을 곱한 뒤 문자열로 변환해서 반환

re.sub('[0-9]+', multiple10, '1 2 Fizz 4 Buzz Fizz 7 8')
# 답 : '10 20 Fizz 40 Buzz Fizz 70 80'