파이썬에서 정규식(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 |
댓글