주제: 정규표현식
✍ (1) 정규표현식 미사용
data = \
"""Geon 010-1111-2222
Ha 010-3333-5555"""
list = []
for line in data.split('\n'):
tmp_list = []
for word in line.split(' '):
if len(word) == 13 and word[:3].isdigit() and word[4:8].isdigit() and word[9:].isdigit():
word = word[:4] + "****" + word[8:]
tmp_list.append(word)
list.append(" ".join(tmp_list))
print('\n'.join(list))
💻 출력
Geon 010-****-2222
Ha 010-****-5555
✍ (2) 정규표현식 사용
import re
data = \
"""Geon 010-1111-2222
Ha 010-3333-5555"""
pattern = re.compile("(\d{3})[-](\d{4})[-](\d{4})")
print(pattern.sub("\g<1>-****-\g<3>", data))
💻 출력
Geon 010-****-2222
Ha 010-****-5555
본래 의미가 아닌 다른 용도로 사용되고, 각 기능에 따라 세부적인 분류를 할 수 있는 문자
출처: tistory, [정규 표현식] 메타 문자 알아보기, 'https://zephyrus1111.tistory.com/310', (2023.03.23)
정규표현식을 쉽게 감을 잡을 수 있는 사이트다. 여기서 연습해보자!
출처: RegExr, "regexr.com", https://regexr.com/, (2023.03.24)
-대괄호 안에 있는 문자들과 매치
-하이픈(-)을 써서 범위를 지정 가능
-> 대괄호 내에 여러 개의 패턴 사용 가능함
줄바꿈문자(\n)을 제외한 모든 문자와 매칭
3.(1) (*)
-0번 이상 반복된 모든 문자와 매칭
- space도 하나의 문자라고 생각해야 함
- thiiink, thiink, thnk도 매칭 가능
3.(2) (+)
-1번 이상 반복된 모든 문자와 매칭
- thnk는 매칭 되지 않음
3.(3) ({m,n})
-m번 이상 n번 이하로 반복하여 모든 문자와 매칭
- thi{1,3}nk: 가운데 문자 i가 1번 이상 3번 이하로 1번 반복됨
- think, thiiink: 매칭 가능
- thnk: 매칭 불가능
3.(4) ({m})
-정확히 m번 반복하여 사용한 모든 문자와 매칭
- thi{1}nk: 문자i가 정확히 1번만 반복됨
- think 매칭 가능
- thiiink, thnk: 매칭 불가능
3.(5) ({m,})
-m번 이상 반복하여 사용된 모든 문자와 매칭
- thi{1,}nk: 문자i가 1번 이상 반복됨
- thiiiink, thiink: 매칭 가능
- thnk: 매칭 불가능
3.(6) (?)
-0번 또는 1번 반복하여 사용된 모든 문자와 매칭
- thi?nk: 문자i가 0번 또는 1번 반복됨
- think, thnk: 매칭 가능
- thiiink: 매칭 불가능
-여러 개의 문자로 이뤄진 패턴을 생성 가능
- po(ta){1,3}to: to로 시작하고 중간에 ta가 1번 이상 3번 이하 반복되고 to로 끝나는 문자와 매칭
- to(ta|pa){1,3}to: to로 시작하고 중간에 ta또는 pa가 1번 이상 3번 이하 반복되고 to로 끝나는 문자와 매칭
-문자열에서 이스케이스 시퀀스의 시작을 알려주는 역할
-메타문자 앞에 역슬래시를 붙여주면 원래 의미로 돌아감
정규표현식에 대한 이론과 실습을 통해 쉽게 감을 잡을 수 있어서 좋았다.
이번 기회를 통해 정규표현식 공부를 더 해보고 싶다.