정규표현식 질문입니다!


다음과 같은 정규식이 있는데 이게 어떤걸 뜻하고 있는지 잘 모르겠습니다. 다음부분을 고쳐서 로그인을 했을 때만 이 페이지를 보여주려고하는데 해석 부탁드립니다!

소스코드

url(r'^(?P<code_id>[-\w]+)$',views.my_method)
  • 2016년 06월 01일에 수정됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.
  • 2016년 02월 25일에 작성됨

조회수 390


2 답변


좋아요
3
싫어요
채택취소하기

장고의 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를 받아오면 됩니다.

  • 2016년 02월 26일에 작성됨
    루비와 파이썬을 좋아합니다. 새로운 언어를 배우는것도 좋아해요. 모바일 게임도 조금 만들어 봤습니다.


질문하신 정규식은 ^(?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 에 기술되어 있습니다.

  • 2016년 03월 30일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close