본문 바로가기
개발일지/Python

22.03.02 [파이썬 웹개발] 정규표현식

by 개발에정착하고싶다 2022. 3. 2.
320x100

파이썬에 있어서 "정규 표현식"은 진짜 별 답답하고 외계어같은가. 싶으면서도

보면 볼 수록 유용할 것같은 직감이 빡빡 오는 그런 것이라서 소개하고자 한다.

 

일단, 이 정규표현식을 연습할 수 있는 사이트는

https://regexr.com/639t5

 

RegExr: Learn, Build, & Test RegEx

RegExr is an online tool to learn, build, & test Regular Expressions (RegEx / RegExp).

regexr.com

여기이다.

 

 

================================================

 

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