티스토리 뷰

Regular Expression (정규표현식)

- 문자열 패턴, 규칙, Rul을 정의하는 방법 

- 이를 통해, 문자열 검색이나 치환작업을 간편하게 처리 가능

- 파이썬3 정규표현식 라이브러리 re 모듈을 지원


예시

최대 3자리 숫자 : "[0-9]{1,3}" 혹은 "\d{1,3}"

휴대폰번호 : "010[1-9]\d{7}"

한글이름 2글자 혹은 3글자 : "[ㄱ-힣]{2,3}"

성이 "이" 인 이름 : "이[ㄱ-힣]{1,2}" 


1글자 패턴 예시

숫자 1글자 : "[0123456789]" 또는 "[0-9]" 또는 "\d"

알파벳 소문자 1글자 : "[abcdefghijklmnopqrstuvwxyz]" 혹은 "[a-z]"

알파벳 대문자 1글자 : "[ABCDEFGHIJKLMNOPQRSTUVWXYZ]" 혹은 "[A-Z]"

알파벳 대/소문자 1글자 : "[a-zA-Z]"

16진수 1글자 : "[0-9a-fA-F]"

문자열의 시작을 지정 : "^"

문자열의 끝을 지정 : "$"

한글 1글자 : "[ㄱ-힣]"


반복횟수 지정

"\d?" : 숫자 0회 또는 1회

"\d*" : 숫자 0회 이상

"\d+" : 숫자 1회 이상

"\d{m}" : 숫자 m글자

"\d{m,n}" : 숫자 m글자 이상, n글자 이하 


휴대폰 번호를 판단하는 정규표현식

# 11자 (01012341234),  10자 (0111231234) [011,016,017,018,019] 과거 휴대폰 번호 존재

import re


val = "01012341234"

pattern = r"^01[016789][1-9]\d{6,7}$"

if re.match(pattern, val):

print ("휴대폰 번호 포맷 일치")

else:

print ("휴대폰 번호 포맷 불일치") 



URL Conf

- 프로젝트(askdjango) setting.py에 URLConf 모듈을 지정한다.

ROOT_URLCONF = 'AskDjango.urls' 

- 특정 URL과 뷰 매핑 List

- Django 서버로 Http요청이 들어올 때마다, URLConf매핑 List를 처음부터 끝까지 순차적으로 훝으며 검색한다.

- 매칭되는 URL Rule을 찾지 못할경우, 404 Page Not Found 응답을 발생 시킨다.


예제1

# blog/urls.py

url(r'^sum/(?P<x>\d+)/$', views.mysum) # (?P)영역 문자열 정규표현식을 적용하여 \d+패턴에 부합된다면 x라는 변수명을 인자로 넘기겠다.


# blog/views.py

def mysum(request, x):

return HttpResponse(int(x))

> x라는 인자 1개를 넘겨 받아 처리


예제2

# blog/urls.py

url(r'^sum/(?P<x>\d+)/(?P<y>\d+)/$', views.mysum)


# blog/views.py

def mysum(request, x, y):

return HttpResponse(int(x) + int(y))

> x,y라는 인자 2개를 넘겨받아 덧샘하여 return


예제3

# blog/urls.py

url(r'^sum/(?P<x>\d+)/(?P<y>\d+)/(?P<z>\d+)/$', views.mysum)

url(r'^sum/(?P<x>\d+)/(?P<y>\d+)/$', views.mysum)

url(r'^sum/(?P<x>\d+)/$', views.mysum)


# blog/views.py

def mysum(request, x, y=0, z=0):

     retrun HttpResponse(int(x) + int(y) + int(z))


예제4

# 인자가 여러개인 경우

url(r'^sum/(?P<numbers>[\d/]+)/$', views.mysum)


# blog/views.py

def mysum(request, numbers):

    return HttpResponse(sum(map(int,numbers.split('/'))))


# blog/urls.py (이름, 나이 인자 받기)

url(r'^hello/(?P<name>[ㄱ-힣]+)/(?P<age>\d+)$', views.hello)


# blog/views.py

def hello(request, name, age):

    return HttpResponse('안녕하세요. {}. {}살이시네요'.format(name,age)) 




"""본 내용은 AskDjango VOD, "장고 차근차근 시작하기" 강의내용을 참고하여 작성했습니다.(https://nomade.kr/)"""

반응형

'Python > * Django' 카테고리의 다른 글

6. Django Admin  (0) 2017.12.12
5. Migration  (0) 2017.12.12
4. Django Model과 Model Fields  (0) 2017.12.12
3. View Overview  (0) 2017.12.12
1. Django App, URLconf, Template  (0) 2017.12.11
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함