상세 컨텐츠

본문 제목

08. 정규 표현식 - 1

데이터 분석/웹 스크래핑

by 알파고제로 2023. 10. 26. 09:03

본문

■ 정규 표현식 (Regular Expression)

  • 정규표현식은 복잡한 문자열을 처리할 때 사용하는 기법
[사례]
주민등록번호를 포함하고 있는 텍스트에서 주민등록번호 뒷자리를 * 문자로 변경
- 주민등록번호 문자열은 주민등록번호 형식인지 조사한다.
  • 일반 파이썬 문법을 이용한 코드
data = """
park 800904-1234567
kim 841204-1015478
"""

result = []
for line in data.split("\n"):
    word_result = []
    for word in line.split():
        if len(word) == 14 and word[:6].isdigit() and word[7:].isdigit():
            word = word[:6] + '-' + '*******'
        word_result.append(word)
    result.append(" ".join(word_result))
print("\n".join(result))
  • 정규 표현식 문법을 이용한 코드
import re

data = """
park 800904-1234567
kim 841204-1015478
"""

pat = re.compile("(\d{6})[-]\d{7}")
print(pat.sub(r”\1-*******", data))

 

 메타 문자

  • 정규 표현식에 사용되어 지는 특별한 의미를 갖는 문자
. ^ $ * + ? {} [] \ | ()

■ 문자 클래스 []

  • [] 안에 포함된 문자들 중 하나와 매치 여부를 확인한다.
정규식 문자열 매치 여부
[abc] a Yes
before Yes
dude No
  • 문자 사이에 하이픈(-)을 사용하면 두 문자 사이의 범위(from-to)를 의미한다.
    [a-c] -> [abc], [0-5] -> [012345]와 동일
  • 문자 클래스 안에 ^ 메타 문자가 사용되면 not의 의미를 갖는다. [^0-9]는 숫자가 아닌 문자만 매치된다.
  •  ^ 메타 문자가 [] 밖에 사용되면 특정 문자로 시작하는지 판단

■ 자주 사용하는 문자 클래스

  • 자주 사용하는 정규식은 별도의 표기법으로 표현할 수 있다.
정규 표현식 설명
\ 정규 표현식에서 사용하는 문자 그대로 표현하려면 앞에 \를 붙임 ) \+, \*
\d 숫자와 매치, [0-9]와 동일한 표현식
\D 숫자가 아닌 것과 매치, [^0-9]와 동일한 표현식
\s 공백문자(space, tab)와 매치, [ \t\n\r\f\v]와 동일한 표현식
\S 공백문자가 아닌 것과 매치 [^ \t\n\r\f\v]와 동일한 표현식
\w 문자+숫자와 매치, [a-zA-Z0-9]와 동일한 표현식
\W 문자+숫자가 아닌 문자와 매치, [^a-zA-Z0-9]와 동일한 표현식

'데이터 분석 > 웹 스크래핑' 카테고리의 다른 글

09. 정규 표현식 - 2  (0) 2023.10.27
07. Web Scrapping  (0) 2023.10.26
06. HTTP 요청/응답  (0) 2023.10.25

관련글 더보기

댓글 영역