데이터사이언스 대학원 생활/TextAnalytics

정규 표현식(Regular Expression)

데욱 2023. 3. 14. 11:45

What is Regular Expression?

 

특정한 문자의 패턴을 정의하는 방식!!

데이터를 수집하거나 전처리할 때 사용된다.

 

실습 가능 사이트

RegExr: Learn, Build, & Test RegEx

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

위 사이트에서 정규표현식을 쉽게 연습해볼 수 있다.

그럼 어떻게 사용할 수 있는가? >> 메타문자를 사용!!

 

메타문자는 검사 범위를 지정하거나 수량 그리고 검사 위치를 나타내는 등

기능에 따라 세부적인 분류를 한다.

 

메타문자


메타문자를 사용해서 예제를 연습해보도록하자. 필자는 ChatGPT를 이용해서 예제를 만들었다.

New chat (openai.com)

 

 

예제1. 텍스트 내의 IP주소를 추출하는 정규표현식을 작성해보자 (IP주소는 xxx.xxx.xxx.xxx의 형식)

더보기

정답 >> [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}

  •  역슬래시(\)를 제외하더라도 코드는 실행된다.
    하지만 정확한 입력을위해 역슬래시를 붙여 dot(.)가 기호임을 나타내자

 

예제2. 텍스트 내의 전화번호를 추출하는 정규표현식을 작성해보자 (전화번호는 xxx-xxx-xxxx의 형식)

더보기

정답 >> [0-9]{2,4}-[0-9]{3,4}-[0-9]{3,4}

 

 

예제3. 텍스트 내의 전화번호를 추출하는 정규표현식을 작성해보자 (전화번호는 (xxx)xxx-xxxx의 형식)

더보기

정답 >> \([0-9]{1,4}\)[0-9]{3,4}-[0-9]{3,4}

  •  역슬래시(\)를 제외하면 코드는 실행되지 않는다.

그렇다면 파이썬에서는 어떻게 활용될 수 있을까?

 

1. Pattern 생성

  • re.complie()               # 정규표현식을 컴파일한다.
# a로 시작하며 그 뒤에 b가 0개 이상 붙어있는 패턴
p = re.compile('ab*')

# 패턴은 Pattern이라는 클래스의 객체이다.
print(type(p))
print(p.__class__.__name__)

 

2.re.Pattern클랙스의 유용한 메소드

  1. match(): 문자열의 처음부터 정규식과 매치되는지 조사
  2. search(): 문자열 전체를 탐색하여 정규식과 매칭되는지 조사
  3. findall(): 정규식과 매칭되는 모든 문자열을 반환
  4. finditer(): 정규식과 매칭되는 모든 문자열을 반복가능한 객체 형태로 반환한다.

 

2.re.compile()의 옵션 사용

  1. re.DOTALL,re.S
    \n도 포함하여 매칭하고 싶을 때 사용
  2. re.IGNORECASE, re.I
    대소문자 구별 없이 매칭할 때 사용
  3. re.MILTILINE, re.M
    패턴을 문자열의 각 줄마다 적용해 주는 것
  4. re.VERBOSE (additional)
    문자열에 사용된 whitespace를 컴파일할 때 제거됨