정규표현식을 왜 사용할까?

정규표현식

정규표현식이란 무엇일까?

정규표현식은 복잡하고 특정한 규칙을 가진 문자열을 처리할 때 사용하는 기법이다. 복잡한 문자열의 검색과 치환을 위해 사용되며, Python 뿐만 아니라 문자열을 처리하는 모든 곳에서 사용된다. 그리고 정규표현식을 잘 다루면 Python 외에 또 하나의 강력한 무기를 얻게 되는 것이다!

  • 복잡하고 특정한 규칙을 가진 문자열을 처리할 때 사용하는 기법

  • Python 뿐만 아니라 문자열을 처리하는 모든 곳에 사용됨.

  • 정규표현식을 정규식이라고도 한다.



그러면 정규표현식을 왜 사용할까?

다음과 같은 문제가 있다고 생각해보자.

주민등록번호를 포함하고 있는 텍스트가 있다. 이 텍스트에 포함된 모든 주민등록번호의 뒷자리를 '*'로 변경해보자.

먼저 정규표현식을 모르는 상태라면, 아래와 같은 코드를 작성해야한다.

정규표현식을 사용하지 않은 코드

data = """
park 950101-1234567
lee  890212-3456789
"""

result = []
# 1. data를 Enter 단위로 나누기 위한 코드
for line in data.split("\n"):
    word_result = []
    # 2. (ex) park 950101-1234567 을 park과 950101-1234567로 나누기 위한 코드
    for word in line.split(" "):
        # 3. 주민등록번호인지 확인하는 조건
        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 950101-1234567
lee  890212-3456789
"""

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

위와 같이 정규표현식을 이용하면 코드가 간결해지며 쉽고 빠르게 구현할 수 있다. 이후 포스팅에서 더 자세히 정리 및 설명할 예정이기 때문에 정규표현식의 예제코드를 너무 이해하려 하지 말자. 정규표현식을 사용하면 훨씬 좋다는 것을 직관적으로 보면 된다!

출처 : https://wikidocs.net/1642
https://devkingdom.tistory.com/131

좋은 웹페이지 즐겨찾기