[etc] 정규 표현식 (Regular Expressions)

정규 표현식 (Regular Expressions)

  • 정규식 (Regex 또는 Regexp) 이란?
    • 특정 검색 패턴(ASCII 또는 Unicode 문자의 시퀀스)에 대한 하나 이상의 일치 항목을 검색
    • 검색된 텍스트로부터 정보를 추출하는데 매우 유용하게 사용가능한 표현식
    • 유효성 검사에서 문자열 파싱 및 대체
    • 데이터를 다른 형식으로 변환 및 웹 스크래핑에 이르기까지 다양한 응용분야에서 활용
    • 프로그래밍 언어(Python, Javascript, Java, C) 와 텍스트에디터(vi, notepad++, 등)에 적용 가능

1. 정규식 패턴

점프 투 파이썬

[표]

image-20200901202305237

[표2]

image-20200901202425344

2. 사용하는 상황

주민번호를 포함하고 있는 텍스트가 있다. 이 텍스트에 포함된 모든 주민번호 뒷자리를 * 문자로 변경해보자.
data = """
park 800905-1049118
kim  700905-1059119
"""

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

## 결과값:
park 800905-*******
kim  700905-*******
import re 

data = """
park 800905-1049118
kim  700905-1059119
"""

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

## 결과값:
park 800905-*******
kim  700905-*******

hihi