728x90

파이썬은 정규 표현식을 지원하기 위해 re(regular expression의 약어) 모듈을 제공한다.

re 모듈은 파이썬을 설치할 때 자동으로 설치되는 기본 라이브러리이다.

import re
 
str = 'love people around you, love your work, love yourself'
 
# 1) match : 문자열의 처음부터 정규식과 매치되는지 조사 (결과 : 1개의 match 객체)
# 문자열의 처음에 일치하는 문자열이 없으면 None 반환
result0 = re.match('love'str)
print(result0)

result1 = re.match('people'str)
print(result1)

# 2) search : 문자열의 전체를 검색하여 정규식과 매치되는지 조사 (결과 : 1개의 match 객체)
result = re.search('people'str)
print(result)
 
# 2.1) group() : 매칭된 문자열을 반환
print("matched string : {}".format(result0.group()))
print("matched string : {}".format(result.group()))
 
# 2.2) start() : 매칭된 문자열의 시작 위치 반환
print(result.start())
 
# 2.3) end() : 매칭된 문자열의 끝 위치 반환
print(result.end())
 
# 2.4) span() : 매칭된 문자열의 (시작, 끝) 위치 튜플을 반환
print(result.span())
 
 
# 3) findall : 문자열의 전체를 검색 (결과 : 문자열 리스트)
# search 가 최초로 매칭되는 패턴만 반환한다면, findall은 매칭되는 전체의 패턴을 반환
# https://link2me.tistory.com/2129 에서 제대로 된 예제 확인 가능
rst_all = re.findall('love'str)
print(rst_all)
 
# 4) finditer : 문자열의 전체를 검색 (결과 : match 객체 iterator)
results = re.finditer('love'str)
print(results)
 
for result in results:
    print(result)
 
# 5) fullmatch 패턴과 문자열이 완벽하게 일치하는지 검사
str2 = 'Hey Guys, read books'
result = re.fullmatch('.*', str2)
print(result)
 
# 1. Group 그룹
# 1) 매칭되는 문자열 1개
str1 = '010-1112-6780'
result = re.match('\d{2,3}-\d{3,4}-(\d{4})$', str1)
print(result.group(1))
 
# 2) 매칭되는 문자열 여러개
str2 = '010-2343-7888,010-2343-1234,010-2343-5678,010-2343-9999,010-2343-2222'
results = re.finditer('\d{2,3}-\d{3,4}-(\d{4})(?=,|$)', str2)
# (?=,|$) : 전방탐색 , 기준으로 전방탐색, 문자열 마지막($) 기준으로 전방탐색

for idx, result in enumerate(results, 1):
    print(f'{idx}. {result.group(1)}')
 
 
# 2. Substitution (교체) - 전화번호 마스킹 처리
# sub : 주어진 문자열에서 일치하는 모든 패턴을 replace
# 그 결과를 문자열로 다시 반환함.
# 두번째 인자는 특정 문자열이 될 수도 있고, 함수가 될 수도 있음.
# count가 0인 경우는 전체를 치환하고, 1이상이면 해당 숫자만큼 치환 됨.
str3 = '010-1113-5680'
후방탐색 : ?<=
result = re.sub('(?<=\d{3}-\d{4}-)\d{4}''****', str3)
print(result)
 
result = re.sub('(?<=\d{3}-\d{2})\d{2}-\d{2}''**-**', str3)
print(result)
 

 

import re
 
# compile
# 동일한 정규표현식을 매번 다시 쓰기 번거로움을 해결
# compile로 해당 표현식을 re.RegexObject 객체로 저장하여 사용 가능
 
email_regex = re.compile("([A-Za-z]+[A-Za-z0-9]+@[A-Za-z]+\.[A-Za-z]+)")
# email_regex = re.compile("(\.)")
email_input = input("이메일 입력 : ")
email_validation = email_regex.search(email_input.replace(" ",""))
 
if email_validation:
    print("It's vaild")
else:
    print("It's invaild")
블로그 이미지

Link2Me

,