[텍스트데이터분석] 정규표현식-regexr

9e0na·2023년 3월 23일
1

[자연어처리]

목록 보기
1/2
post-thumbnail

주제: 정규표현식

1. 정규표현식이란?

  1. 특정한 문자의 패턴을 정의하는 방식
  2. 특정한 규칙을 가진 문자열 탐색
  3. 파이썬에서 정규표현식을 사용하기 위해서는 re라는 모듈을 불러와서 사용해야 함

1.1 예시: 휴대폰번호 가운데 자리를 *자리로 변경하기

✍ (1) 정규표현식 미사용

data = \
"""Geon 010-1111-2222
Ha 010-3333-5555"""

list = []
for line in data.split('\n'):
    tmp_list = []
    for word in line.split(' '):
        if len(word) == 13 and word[:3].isdigit() and word[4:8].isdigit() and word[9:].isdigit():
            word = word[:4] + "****" + word[8:]
        tmp_list.append(word)
    list.append(" ".join(tmp_list))

print('\n'.join(list))

💻 출력

Geon 010-****-2222
Ha 010-****-5555

✍ (2) 정규표현식 사용

import re

data = \
"""Geon 010-1111-2222
Ha 010-3333-5555"""

pattern = re.compile("(\d{3})[-](\d{4})[-](\d{4})")
print(pattern.sub("\g<1>-****-\g<3>", data))

💻 출력

Geon 010-****-2222
Ha 010-****-5555

1.2 메타문자

본래 의미가 아닌 다른 용도로 사용되고, 각 기능에 따라 세부적인 분류를 할 수 있는 문자

출처: tistory, [정규 표현식] 메타 문자 알아보기, 'https://zephyrus1111.tistory.com/310', (2023.03.23)


1.3 정규표현식 실습

정규표현식을 쉽게 감을 잡을 수 있는 사이트다. 여기서 연습해보자!

출처: RegExr, "regexr.com", https://regexr.com/, (2023.03.24)


(1) 문자클래스 []

-대괄호 안에 있는 문자들과 매치

  • 예시: [geonha]: 문자열에서 g,e,o,n,h,a와 매칭되는 부분을 탐색

-하이픈(-)을 써서 범위를 지정 가능

  • 예시: [a-e]: 문자열에서 a,b,c,d,e와 매칭되는 부분 탐색
  • 예시: [be]r: 소문자 b or e로 시작하면서 r로 끝나는 문자를 탐색
  • 예시: [a-eA-E]: 소문자 a부터 e까지, 대문자A부터 E까지의 문자를 모두 추출

-> 대괄호 내에 여러 개의 패턴 사용 가능함

(2) Dot(.)

줄바꿈문자(\n)을 제외한 모든 문자와 매칭

  • 예시: [th.n]: 가운데 문자 i가 "."에 해당됨

(3) 반복(*) / (+) / ({m,n}) / ({m}) / ({m,}) / (?)

  • 3.(1) (*)
    -0번 이상 반복된 모든 문자와 매칭

    • space도 하나의 문자라고 생각해야 함
    • thiiink, thiink, thnk도 매칭 가능
  • 3.(2) (+)
    -1번 이상 반복된 모든 문자와 매칭

    • thnk는 매칭 되지 않음
  • 3.(3) ({m,n})
    -m번 이상 n번 이하로 반복하여 모든 문자와 매칭

    • thi{1,3}nk: 가운데 문자 i가 1번 이상 3번 이하로 1번 반복됨
    • think, thiiink: 매칭 가능
    • thnk: 매칭 불가능
  • 3.(4) ({m})
    -정확히 m번 반복하여 사용한 모든 문자와 매칭

    • thi{1}nk: 문자i가 정확히 1번만 반복됨
    • think 매칭 가능
    • thiiink, thnk: 매칭 불가능
  • 3.(5) ({m,})
    -m번 이상 반복하여 사용된 모든 문자와 매칭

    • thi{1,}nk: 문자i가 1번 이상 반복됨
    • thiiiink, thiink: 매칭 가능
    • thnk: 매칭 불가능
  • 3.(6) (?)
    -0번 또는 1번 반복하여 사용된 모든 문자와 매칭

    • thi?nk: 문자i가 0번 또는 1번 반복됨
    • think, thnk: 매칭 가능
    • thiiink: 매칭 불가능

(4) 패턴을 그룹화하기: 소괄호()

-여러 개의 문자로 이뤄진 패턴을 생성 가능

  • po(ta){1,3}to: to로 시작하고 중간에 ta가 1번 이상 3번 이하 반복되고 to로 끝나는 문자와 매칭
  • to(ta|pa){1,3}to: to로 시작하고 중간에 ta또는 pa가 1번 이상 3번 이하 반복되고 to로 끝나는 문자와 매칭

(5) 역슬래시: \

-문자열에서 이스케이스 시퀀스의 시작을 알려주는 역할
-메타문자 앞에 역슬래시를 붙여주면 원래 의미로 돌아감


🎯 Summary

정규표현식에 대한 이론과 실습을 통해 쉽게 감을 잡을 수 있어서 좋았다.
이번 기회를 통해 정규표현식 공부를 더 해보고 싶다.


📚 References

profile
디지털 마케터가 되기 위해 [a-zA-Z]까지 정리하는 거나입니다 😊

0개의 댓글