정규표현식 질문입니다!
조회수 2889회
다음과 같은 정규식이 있는데 이게 어떤걸 뜻하고 있는지 잘 모르겠습니다. 다음부분을 고쳐서 로그인을 했을 때만 이 페이지를 보여주려고하는데 해석 부탁드립니다!
소스코드
url(r'^(?P<code_id>[-\w]+)$',views.my_method)
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
장고의 urls파일인것 같은데요. 보통 이런 url은 app안에 들어있는 urls.py에 있으니까 app이름을 somename이라고 가정하고 설명할게요. 그리고 연결되는 method는 다음과 같이 views.my_method라고 가정하고 설명하겠습니다.
url(r'^(?P<code_id>[-\w]+)$',views.my_method)
이 때,
mysite.com/somename/hi-123-hello
이라는 url요청이 들어오면 그걸 my_method에 전달하는데요. 이런 식으로 전달됩니다.views.my_method(request, code_id='hi-123-hello')
my_method에서는** kwarg로 code_id를 받아오면 됩니다.
-
질문하신 정규식은
^(?P<code_id>[-\w]+)$
입니다.^
는 문장의 시작을 뜻합니다.(?P<name>...)
형태는 ...에 매칭되는 그룹에 name이라는 이름을 붙여줍니다. 이 경우 code_id가 이름이 되겠네요.$
는 문장의 끝을 뜻합니다.code_id에 매칭되는 패턴은
[-\w]+
이네요.[...]
는 문자의 집합을 나타냅니다. 이 집합에 들어간 문자는-
와\w
네요.\w
는 단어를 나타내는 문자들 입니다. 알파벳 대소문자와 숫자와 언더스코어가 포함됩니다. 정규식으로는 [a-zA-Z0-9_]입니다.+
는 앞서 나온 패턴이 1번 혹은 그 이상 반복된다는 뜻입니다.따라서
[-\w]+
는 알파벳 대소문자, 숫자, 언더스코어, 하이픈이 한 글자 이상 반복되는 문자열에 매칭이 되겠네요.질문 주신
^(P<code_id>[-\w]+)$
는 문장의 시작부터 끝까지 알파벳 대소문자, 숫자, 언더스코어, 하이픈만으로 한 글자 이상 반복되는 문자열을 code_id라는 이름으로 매칭해주는 정규식이 되겠습니다.파이썬 정규식에 대한 자세한 내용은 https://docs.python.org/3/library/re.html 에 기술되어 있습니다.
-
(•́ ✖ •̀)
알 수 없는 사용자
-
댓글 입력