320x100
파이썬에 있어서 "정규 표현식"은 진짜 별 답답하고 외계어같은가. 싶으면서도
보면 볼 수록 유용할 것같은 직감이 빡빡 오는 그런 것이라서 소개하고자 한다.
일단, 이 정규표현식을 연습할 수 있는 사이트는
여기이다.
================================================
import re
# re 는 정규표현식 *, 이런 것들.
# 1. re 모듈의 메서드
str = "love people around you, love your work, love yourself"
# 1) match : 문자열의 처음부터 검색 (결과 : 1개의 match 객체)
result = re.match("love", str)
print(result)
# 2) search : 문자열의 전체를 검색 (결과: 1개의 match 객체)
result = re.search("people",str)
print(result)
# 3) findall : 문자열의 전체를 검색 (결과 : 문자열 리스트)
results = re.findall("love", str)
print(results)
# 4) finditer : 문자열의 전체를 검색 (결과: match 객체 이터레이터)
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)
# 2. match object의 메서드
result = re.search("people",str)
# 1) group(): 매칭된 문자열을 반환
print(result.group())
# 2) start() : 매칭된 문자열의 시작 위치 반환
print(result.start())
# 3) end(): 매칭된 문자열의 끝 위치 반환
print(result.end())
# 4) span() : 매칭된 문자열의 (시작, 끝) 위치 튜플을 반환
print(result.span())
==================================================
import re
# 전화번호 정규표현식 연습
# 1. Group 그룹
# 1) 매칭되는 문자열 한개
str1 = "010-2343-3333"
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-5793,010-2343-6666,010,5234,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(교체)
str3 = "010-2343-3333"
result = re.sub("(?<=\d{3}-\d{4})-\d{4}","****",str3)
print(result)
진짜 조올라게 어렵다; 하지만 하나 하나가 이해가 크게 안가진 않는다.
다만 답지 확인하듯이 확인해야 아는수준...; 암튼 나쁘지 않음!
300x250
'개발일지 > 임시카테고리' 카테고리의 다른 글
22.03.03 [파이썬 웹개발] 함수고급(레이터시리즈) (0) | 2022.03.03 |
---|---|
22.03.03 [파이썬 웹개발] 멀티스레드, 멀티프로세싱 (0) | 2022.03.03 |
22.03.02 [파이썬 웹개발] class 마지막 파트 (0) | 2022.03.02 |
22.03.01 [파이썬 웹개발] class 다시! part1 (0) | 2022.03.01 |
22.03.01 [파이썬 웹개발] map, filter 함수 이용 (0) | 2022.03.01 |