파이썬 정규표현식 의미와 사용법은?!

2021. 7. 2. 06:02

이전 포스팅에서 파이썬 정규표현식을 위한 패키지 re와 pygrok에 대해서 알아보았다. 오늘은 파이썬 정규표현식의 의미와 사용법에 대해서 알아보도록 하겠다.
( 참조: 파이썬 정규표현식 패키지 re와 pygrok 사용법은?! )

 


정규표현식(regular expression)은 특정 규칙으로 문자열의 집합을 표현하는 언어로, 파이썬에만 있는 것은 아니다. 문자열의 패턴을 잡고 처리하는데 매우 유용하다.

정규표현식을 한땀한땀 알아가는 것도 의미가 있지만, 해당 포스팅은 이미 많이 있는 듯 하다. 여기서는 필자가 자주 사용하는 코드를 중심으로 정규표현식에 대해서 알아보도록 하겠다. 파이썬에서 정규표현석을 사용하기 위해서는 pygrok이나 re패키지를 이용해야 한다.

 

 

파이썬 정규표현식

 

 

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

\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)

 

 

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

태그 :

댓글()