728x90
정규식은 모든 나라에서 공통으로 사용된다.
패턴이 많아서 사용할 때마다 헷갈리기 쉽다.
정규식을 사용하는데 쉽게 와닿는곳은 회원가입을 할 때이다.
메일주소나 휴대폰 번호를 입력할 때, 정규식을 사용한다.
@이가 꼭 들어가야 한다던지, 전화번호 중간과 끝이 4자리씩 들어간다던지 할 때이다.
정규표현식 패턴은 아래와 같다.
# <정규표현식 패턴>
* 대괄호 ([]) : 대괄호 안에 있는 문자중에 하나라도 매치되면 추출
* 점(.) : 앞뒤 문자의 사이에 보통 주로 사용, 하나의 문자를 의미
* 반복(*) : 앞의 문자가 0번 이상 반복될 때 추출
* 반복(+) : 앞의 문자가 1번 이상 반복될 때 추출
* 반복({m, n}) : 앞의 문자가 최소 m번, 최대 n번 반복될 때 추출
* 시작(^)과 끝($) : 각 문자열의 시작과 끝을 나타냄
* 물음표(?) : 바로 앞의 문자가 0또는 1회 나타날 수 있음을 의미
* 역슬래시(\) : 이스케이프라고 읽고, 특수문자를 일반 문자로 인식시킴
* 소괄호() : 그룹화라고 읽고, 괄호 안의 패턴을 하나의 그룹으로 묶어서 처리 가능
* 조합가능
* \d : 숫자
* \b : 단어의 경계를 나타냄(보통 문장의 처음과 끝에 제시함)
* \w : 한개의 문자, 한개의 숫자
* \s : 공백(탭, 스페이스, 줄바꿈(\n), 캐리지리턴(CR))
우선 python에서 정규식을 사용할 때는 re를 import 해주어야 한다.
import re
^의 경우에는 위치에 따라 부정으로도 사용할 수 있다.
def check_num(addr):
pattern = '[^0-9]'
if(re.fullmatch(pattern, addr)):
print(f'{addr}는 유효한 주소입니다.')
else:
print(f'{addr}는 잘못된 주소 형식입니다.')
check_num('a')
결과 : a는 유효한 주소입니다.
0부터 9까지의 포함되지 않으니 True이다.
check_num('1')
결과 : 1는 잘못된 주소 형식입니다.
0부터 9까지의 숫자는 사용할 수 없으므로 1은 False이다
pattern = '010-\d\d\d\d-\d\d\d\d'
str = '제 휴대폰 번호는 010-1234-4567입니다.'
found = re.search(pattern, str)
print('휴대폰 번호 형식은 : ', found.group())
결과 : 휴대폰 번호 형식은 : 010-1234-4567
위와 같이 텍스트 내에서 전화번호를 추출할 수도 있다.
re의 search함수를 사용할 때 첫 번째 매개변수는 패턴이 들어가고, 두 번째 매개변수는 텍스트를 넣을 수 있다.
이메일 체크 함수를 만들 때도 유용하다.
def check_email(email_addr):
pattern = '^[\w]+[@][\w]+\.[A-Za-z]{2,4}$'
if(re.fullmatch(pattern, email_addr)):
print(f'{email_addr}는 유효한 주소입니다.')
else:
print(f'{email_addr}는 잘못된 주소 형식입니다.')
check_email('abc123@gmail.com')
결과 : abc123@gmail.com는 유효한 주소입니다.
함수를 정의하고, 사용하게 되면 원하는 조건에 따라 결과물을 추출할 수 있다.
정규식을 자주 사용하지 않아도 쓰려고 하면 패턴이 생각나지 않으니 미리미리 적어두거나 기억해 두자
728x90
'python' 카테고리의 다른 글
python 도서관리프로그램(define)(1) (0) | 2023.11.20 |
---|---|
python 기초 (함수(function)) (4) | 2023.11.20 |
python 기초 (예외 처리) (5) | 2023.11.16 |
python 기초(제어문 - while) (0) | 2023.11.16 |
python 기초(제어문 - for) (0) | 2023.11.15 |
댓글