제가 자주 사용하는 코드를 중심으로 정규표현식을 어떻게 작성하는지 알아보겠습니다. 정규표현식(regular expression)은 특정 규칙으로 문자열의 집합을 표현하는 언어입니다. 파이썬에만 있는 것은 아닙니다. 문자열의 패턴을 잡고 처리하는데 매우 유용하지요.

 

 

정규표현식을 한땀한땀 알아가는 것도 의미가 있지만, 해당 포스팅은 이미 많이 있습니다. 이전 포스팅에서 파이썬 정규표현식을 위한 패키지 re와 pygrok에 대해서 알아보았습니다. 파이썬에서 정규표현식을 사용하기 위해서는 위 패키지를 사용해야 합니다.

 

정규 표현식을 이용하기 위해서는 약속된 문자를 알아야 합니다. 하지만 단순히 암기하거나 그냥 봐서는 의미를 알기 어렵고, 아래 예제를 보는 것이 더 도움이 될 듯합니다.

 

  • \d : 숫자
  • \D : 숫자 이외 문자
  • \s : 공백
  • \S : 공백 이외 문자
  • \w : 문자와 숫자
  • \W : 문자와 숫자 이외 문자

 

혹은 대괄호를 이용해서 숫자와 문자 범위를 지정할 수 있다.

 

  • [0-9] : 숫자를 의미
  • [^0-9] : 숫자가 아닌 것
  • [a-zA-Z] : 문자

 

이 외에도 메타 문자라는 기호도 알아야 합니다.

 

  • | : '또는'을 의미 
  • . : 줄 바꿈(\n)을 제외한 모든 문자와 매칭
  • * : 앞의 문자가 0번 이상 반복가능
  • + : 앞의 문자가 한번 이상 반복
  • {m, n} : m에서 n회 반복
  • ? : 앞의 문자가 있어도 되고 없어도 됩니다.

 

1. 여러 개의 문자열 하나로 바꾸기

'또는' 조건을 넣어서 여러 개의 문자열을 하나로 바꿀 수 있습니다.

 

import re

text = '철수는 18 살이고, 밥 을 먹었다.'
pattern = '(철수|밥)'

re.sub(pattern, '영희' , text)

 

2. 여러 개의 공백을 하나의 공백으로, '|'도 공백으로 바꾸기

 

import re

text = '철수   18  살이고| 밥을  먹었다.'
pattern = '(\s+|\|)'

re.sub(pattern, ' ' , text)

 

 

3. 필요한 SQL문 탐색

필요한 SQL문을 정규표현식에 맞게 탐색하는 코드도 작성이 가능합니다.

 

re.compile("insert\s+overwrite\s+(table\s+)?\w+\.\w+\s+partition\s+\(\s*\w+\s*\)", re.IGNORECASE).search(query)

 

 

오늘은 이렇게 파이썬 정규표현식을 작성하는 방법에 대해서 알아보았습니다. 처음에는 사용하기 어색하지만, 익숙해지면 문자열을 굉장히 편리하게 처리할 수 있습니다. 우선은 쉬운 조건부터 사용해보고 익숙해지면 더 어려운 문자에도 도전해 보기를 바랍니다.

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기