【Django】 urls.py의 urlpatterns의 r '^ $ '와 r''은 무엇이 다른가?
것의 발단
최근 Django의 개발 안건에 어사인 되었기 때문에 소스 코드 보면서 공부하고 있었습니다만, Rails로 말하는 곳의 라우터인 urls.py
(루트 URLconf)에 이런 식으로 라우팅이 정의되고 있었습니다.
urls.py(...)
urlpatterns = [
url(r'^$', views.hoge),
url(r'', include(fuga)),
(...)
]
(...)
첫 번째 줄은 알 수 있습니다. 경로 지정없이 루트 디렉토리에 액세스했을 때의 루트입니다 ~라고.
2행째는 무엇입니까・・・. 공문자···? 루트 디렉토리의 뒤에 공문자이기 때문에, 1행째와 같으면···? ? ?
열심히 Google에서 「urlpatterns 공문자」라든지 조사해 보았습니다만, 그러한 해설에는 만날 수 없고・・・.
해결편
곤란해지고 사용 Slack에서 「모르겠어~!」라고 환하고 있으면, 상냥한 선배 방법이 도와 주었습니다.
빈 문자와 일치하는 r''
라는 정규 표현식은 분명히 모든 문자열과 일치하는 와일드카드 작성 방법과 같습니다.
그렇게 말해 「과연」이라고 생각해, 스스로도 검증해 보면,
sample.pyimport re
if(re.match(r'', "abcde")):
print("match") # -> "match"
if(re.match(r'', " ")):
print("match") # -> "match"
사실, 무엇이든 일치합니다.
즉, 위의 urlpatterns
의 쓰는 방법은, 「루트 디렉토리 이외에의 액세스는 어쨌든 전부 include(fuga)
해 줘」라고 하는 의미였군요. 더 이상 공부가되었습니다.
좀 더 자세히
우선 당초의 의문은 해소한 것입니다만, 아무래도 모야모야 합니다. 그것도 검증하는 과정에서
sample.pyimport re
m = re.findall(r'', "abcde")
print(m) # -> ['', '', '', '', '', '']
···어떤 일? 라는 의문이 생겼기 때문입니다.
다시 생각하고 있는 사이에, 「정규 표현은 오토마톤」이라고 하는 것을 기억했습니다. 오토마톤에 대해서는 아직 사람에게 제대로 설명할 수 있을 정도로 공부할 수 없었습니다만, 싹둑 말하면 「입력에 의해 상태가 천이하는 기구(정말 그것 같다)」라고 생각하고 있습니다.
즉, r''
라고 하는 정규 표현은, 「「아무것도 입력이 없다 1
(엉성한 그림으로 죄송합니다)
그러므로 문자열 abcde
를 r''
그렇습니다.
선배가 「 m
는 끝까지 읽어야 하지만 r'.*'
라고 하는 이야기라고 생각합니다만, 맛있는 공부하려고 합니다).
요약
정규 표현의 구글러빌리티의 낮음에는 곤란한 것이군요・・・.
참고문헌
『 오토마톤 언어 이론 계산론 I [제2판] 』 사이언스사 2003년
오토마톤에서는 이것을 r''
로 나타내는 것 같습니다. ↩
Reference
이 문제에 관하여(【Django】 urls.py의 urlpatterns의 r '^ $ '와 r''은 무엇이 다른가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yagaodekawasu/items/d2bbe16d29900bd3254a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
(...)
urlpatterns = [
url(r'^$', views.hoge),
url(r'', include(fuga)),
(...)
]
(...)
곤란해지고 사용 Slack에서 「모르겠어~!」라고 환하고 있으면, 상냥한 선배 방법이 도와 주었습니다.
빈 문자와 일치하는
r''
라는 정규 표현식은 분명히 모든 문자열과 일치하는 와일드카드 작성 방법과 같습니다.그렇게 말해 「과연」이라고 생각해, 스스로도 검증해 보면,
sample.py
import re
if(re.match(r'', "abcde")):
print("match") # -> "match"
if(re.match(r'', " ")):
print("match") # -> "match"
사실, 무엇이든 일치합니다.
즉, 위의
urlpatterns
의 쓰는 방법은, 「루트 디렉토리 이외에의 액세스는 어쨌든 전부 include(fuga)
해 줘」라고 하는 의미였군요. 더 이상 공부가되었습니다.좀 더 자세히
우선 당초의 의문은 해소한 것입니다만, 아무래도 모야모야 합니다. 그것도 검증하는 과정에서
sample.pyimport re
m = re.findall(r'', "abcde")
print(m) # -> ['', '', '', '', '', '']
···어떤 일? 라는 의문이 생겼기 때문입니다.
다시 생각하고 있는 사이에, 「정규 표현은 오토마톤」이라고 하는 것을 기억했습니다. 오토마톤에 대해서는 아직 사람에게 제대로 설명할 수 있을 정도로 공부할 수 없었습니다만, 싹둑 말하면 「입력에 의해 상태가 천이하는 기구(정말 그것 같다)」라고 생각하고 있습니다.
즉, r''
라고 하는 정규 표현은, 「「아무것도 입력이 없다 1
(엉성한 그림으로 죄송합니다)
그러므로 문자열 abcde
를 r''
그렇습니다.
선배가 「 m
는 끝까지 읽어야 하지만 r'.*'
라고 하는 이야기라고 생각합니다만, 맛있는 공부하려고 합니다).
요약
정규 표현의 구글러빌리티의 낮음에는 곤란한 것이군요・・・.
참고문헌
『 오토마톤 언어 이론 계산론 I [제2판] 』 사이언스사 2003년
오토마톤에서는 이것을 r''
로 나타내는 것 같습니다. ↩
Reference
이 문제에 관하여(【Django】 urls.py의 urlpatterns의 r '^ $ '와 r''은 무엇이 다른가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yagaodekawasu/items/d2bbe16d29900bd3254a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import re
m = re.findall(r'', "abcde")
print(m) # -> ['', '', '', '', '', '']
정규 표현의 구글러빌리티의 낮음에는 곤란한 것이군요・・・.
참고문헌
『 오토마톤 언어 이론 계산론 I [제2판] 』 사이언스사 2003년
오토마톤에서는 이것을 r''
로 나타내는 것 같습니다. ↩
Reference
이 문제에 관하여(【Django】 urls.py의 urlpatterns의 r '^ $ '와 r''은 무엇이 다른가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/yagaodekawasu/items/d2bbe16d29900bd3254a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(【Django】 urls.py의 urlpatterns의 r '^ $ '와 r''은 무엇이 다른가?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yagaodekawasu/items/d2bbe16d29900bd3254a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)