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")
|
728x90
'정규표현식' 카테고리의 다른 글
Python 정규표현식 문자열 추출 (0) | 2022.03.07 |
---|---|
PHP 정규표현식 문자열 추출 (0) | 2022.03.04 |
JQuery 정규표현식을 활용한 페이징 처리(전방탐색, 후방탐색X) (0) | 2021.08.08 |
parse MAC Address using Java Regular Expression (0) | 2021.08.07 |
PHP 정규표현식 후방탐색, 전방탐색 (0) | 2021.07.28 |