DongSup
dev's gait
DongSup
전체 방문자
오늘
어제
  • 분류 전체보기 (71)
    • flask (13)
    • iOS (11)
    • python (22)
    • CS (21)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Swift
  • 한걸음
  • 언어공부
  • 파이썬
  • 첫글

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
DongSup

dev's gait

werkzeug 의 정규표현식
flask

werkzeug 의 정규표현식

2022. 11. 16. 16:26

 

 

Converter 유형

 

 

Converter 설명 정규표현식 표현 (regex)
PathConverter 같은 string 뿐만 아니라 슬래시( / ) 를 허용 '[^/].*?'
UnicodeConverter 슬래쉬( / )문자는 포함하지 않은 문자열 '[^/]' + length
IntegerConverter 양의 정수를 허용 r'\d+'
FloatConverter 양의 부동 소수점 값을 허용 r'\d+\.\d+'
UUIDConverter UUID 문자열 허용 r'[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-' \ 
r'[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12}'

 

 

Flask는 URL에 변수를 할당하여 동적으로 만들 수 있습니다. 

그 방법은 원하는 변수이름에 "<>"를 붙히면 됩니다.

<variable_name>을 사용해 URL에 변수를 추가할 수 있습니다.

그렇게 되면 함수는 <variable_name>을 키워드 인수로 받아들입니다.

 

 

from flask import Flask
app = Flask(__name__)

@app.route('/user/<username>')
def show_user_profile(username):
    return f'User is... {username}'

@app.route('/post/<int:intID>')
def show_a(intID):
   return 'int is... %d' % intID

@app.route('/post2/<string:stringID>')
def show_b(stringID):
   return 'string is... %s' % stringID

@app.route('/path/<path:subpath>')
def show_c(subpath):
    return 'Subpath is... %s' % subpath

@app.route('/path2/<uuid:uuID>')
def show_d(uuID):
    return 'uuid is... %s' % uuID

 

컨버터 유형에 대한 예제코드 입니다.

 

 

위와 같이 선택적으로 변환기를 사용하여 같은 인수 유형을 지정 할 수 있습니다.

 

 


 

 

정규표현식의 패턴

 

 

여기서 PathConverter의 정규표현식을 살펴보자면,

'[^/].*?'  로 해석하자면,

문자 " / " 를 제외한 최소 0 번 이상 나타나는 문자를 찾는 것 입니다.

아래와 같은 정규표현식의 패턴을 보면 알 수 있습니다.

 

 

[^문자] 괄호안의 문자를 제외한 것
$ 끝나는 문자열 의미
. 모든 문자열(띄어쓰기 포함 \n은 제외)
[] 괄호안의 문자들 중 하나. or 처리 묶음 
* 없거나 or 있거나 (여러개)
+ 최소 한개 or 여러개
? 없거나 or 최대 한개만 {0, 1} 와 동일
*? 없거나, 있거나 and 없거나, 최대한개 : 없음
{0} 와 동일
+? 최소한개, 있거나 and 없거나, 최대한개 : 한개
{1} 와 동일
{n} 최소 n개 이상
{m, n} 최소 m개 이상, 최대 n개 이하

 

 

더 자세한 정규표현식을 보고싶으시다면 참고 해주세요.

 

실제로 아래와 같이 코드에 작성하여 정규표현식을 검증해보았습니다.

 

 

import re

print(re.findall('[^/].*?', '/hello/flask/instagram'))
# ['h', 'e', 'l', 'l', 'o', 'f', 'l', 'a', 's', 'k', 'i', 'n', 's', 't', 'a', 'g', 'r', 'a', 'm']
print(re.findall('[^/].{0}', '/hello/flask/instagram'))
# ['h', 'e', 'l', 'l', 'o', 'f', 'l', 'a', 's', 'k', 'i', 'n', 's', 't', 'a', 'g', 'r', 'a', 'm']

 

 

주석에 나와있는 결과를 보시면 문자 " / " 를 제외한 최소 0 번 이상 나타나는 문자들을 찾은 것을 확인 할 수 있습니다.

 

 

 


 

Reference Path

 

 

werkzeug.routing — Flask API

 

tedboy.github.io

 

[JS] 📚 정규표현식(RegExp) - 이해하기 쉽게 정리 + 응용 예제

정규표현식(Regular Expression) 정규식(Regular Expression)은 문자열에서 특정 내용을 찾거나 대체 또는 발췌하는데 사용된다. 대표적으로 입력칸에 전화번호나 이메일을 입력하라고 했을때 옳지 않은

inpa.tistory.com

 

유림's Blog

베짱이가 되고 싶은 개미의 기술 블로그

yurimkoo.github.io

 


'flask' 카테고리의 다른 글

flask clone coding [4] (댓글 API)  (0) 2022.11.20
WSGI와 Werkzeug  (0) 2022.11.16
flask clone coding [3] (JWT 구현)  (0) 2022.11.15
flask clone coding [2] (데이터 검증)  (0) 2022.11.13
flask clone coding [1] (Flask-SQLAlchemy 3.0 변경사항)  (0) 2022.11.06
    'flask' 카테고리의 다른 글
    • flask clone coding [4] (댓글 API)
    • WSGI와 Werkzeug
    • flask clone coding [3] (JWT 구현)
    • flask clone coding [2] (데이터 검증)
    DongSup
    DongSup

    티스토리툴바