본문 바로가기
파이썬

파이썬 정규표현식, 정규식

by python pro 2023. 1. 25.
반응형

 

파이썬에서 정규식(Regular Expression)은 re 모듈을 사용하여 사용할 수 있습니다. 정규식은 텍스트 문자열에서 특정 패턴을 찾거나 치환하는 등의 작업을 수행할 수 있는 기능을 제공합니다.

정규식 패턴

정규식 패턴은 일반적인 문자와 특수 문자로 구성됩니다.

  • . : 임의의 한 문자
  • * : 앞 문자가 0개 이상 존재
  • + : 앞 문자가 1개 이상 존재
  • ? : 앞 문자가 0 또는 1개 존재
  • ^ : 문자열의 시작
  • $ : 문자열의 끝
  • [] : 문자 클래스 (ex: [a-z], [0-9])
  • () : 그룹

예를 들어, 이메일 주소를 검사하는 정규식을 만들기 위해서는 다음과 같이 패턴을 작성할 수 있습니다.

 

import re

pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'

 

패턴 매칭

re 모듈을 사용하여 패턴을 매칭할 수 있습니다. search() 함수는 주어진 문자열에서 패턴을 찾아 매칭되는 결과를 반환합니다.

import re

pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'

# Match example
result = re.search(pattern, 'example@gmail.com')
if result:
    print("Valid Email")
else:
    print("Invalid Email")
    
# Valid Email

 

findall() 함수는 주어진 문자열에서 패턴과 매칭되는 모든 결과를 리스트로 반환합니다.

import re

pattern = r'\d+'

# findall example
result = re.findall(pattern, '12 drummers drumming, 11 pipers piping, 10 lords a-leaping')
print(result)

# ['12', '11', '10']

 

sub() 함수는 주어진 문자열에서 패턴과 매칭되는 부분을 다른 문자열로 치환합니다.

import re

pattern = r'(red|green|blue)'

# sub example
result = re.sub(pattern, 'color', 'red apple, green tree, blue sky')
print(result)

# color apple, color tree, color sky

이러한 파이썬 정규식을 사용하면, 텍스트 문자열에서 특정 패턴을 검색, 치환, 추출 할 수 있습니다.

 

실제 업무에서는 아래와 같은 사례들로 사용될 수 있습니다.

전화번호 형식 검사

import re

def validate_phone_number(number):
    pattern = r'^\d{3}-\d{3}-\d{4}$'
    result = re.search(pattern, number)
    if result:
        return True
    else:
        return False

print(validate_phone_number('123-456-7890')) # True
print(validate_phone_number('1234567890')) # False

CSV 파일에서 데이터 추출

import re

def extract_data_from_csv(file_contents):
    pattern = r'"([^"]*)"'
    data = re.findall(pattern, file_contents)
    return data

file_contents = '"John","Smith","jsmith@gmail.com","555-555-5555"'
print(extract_data_from_csv(file_contents)) # ['John', 'Smith', 'jsmith@gmail.com', '555-555-5555']

HTML 태그 제거

import re

def remove_html_tags(html_string):
    pattern = r'<[^>]*>'
    cleaned_text = re.sub(pattern, '', html_string)
    return cleaned_text

html_string = '<p>This is a <strong>paragraph</strong> with <a href="http://example.com">a link</a>.</p>'
print(remove_html_tags(html_string)) # 'This is a paragraph with a link.'

이러한 예제들은 정규식을 사용하여 문자열을 검사, 치환, 추출 할 수 있는 간단한 사례들로, 정규식을 사용하여 보다 복잡한 문제를 해결할 수도 있습니다.

예를 들어, 웹 크롤링을 하면서 특정 정보를 추출하는 경우 정규식을 사용하여 HTML 코드에서 원하는 정보를 추출할 수 있습니다.

또한, 로그 파일을 분석하는 경우 정규식을 사용하여 특정 패턴을 가진 로그를 추출할 수 있습니다.

정규식은 텍스트 문자열 처리를 위해 매우 강력한 기능을 제공하므로, 주의를 기울여 학습하고 사용하면 다양한 문제를 해결할 수 있을 것입니다.

반응형

'파이썬' 카테고리의 다른 글

파이썬 list comprehension  (0) 2023.01.25
파이썬 표준 라이브러리 소개  (0) 2023.01.25
파이썬 입력과 출력  (0) 2023.01.25
파이썬 문자열 관련 함수  (0) 2023.01.24
파이썬 문자열 포매팅  (0) 2023.01.24

댓글