Django中URL正则表达式匹配

Django框架中的URL分发采用正则表达式匹配来进行,以下是正则表达式的基本规则:

符号匹配
. (dot)任意单一字符
\d任意一位数字
[A-Z]A 到 Z中任意一个字符(大写)
[a-z]a 到 z中任意一个字符(小写)
[A-Za-z]a 到 z中任意一个字符(不区分大小写)
+匹配一个或更多 (例如, \d+ 匹配一个或 多个数字字符)
[^/]+一个或多个不为‘/’的字符
*零个或一个之前的表达式(例如:\d? 匹配零个或一个数字)
*匹配0个或更多 (例如, \d* 匹配0个 或更多数字字符)
{1,3}介于一个和三个(包含)之前的表达式(例如,\d{1,3}匹配一个或两个或三个数字)
元字符含义描述
*匹配O次、1次或多次其前的原子
+匹配1次或多次其前的原子
?匹配0次或1次其前的原子
.匹配除了换行符外的任意一个字符
|匹配两个或多个分支选择
{n}表示其前面的原子恰好出现n次
{n,}表示其前面的原子出现不少于n次
{n,m}表示其前面的原子至少出现n次,最多出现m次
^或\A匹配输入字符串的幵始位置  (或在多行模式下行的幵头,即紧随一换行符之后)
$或\Z匹配输入字符串的结束位置  (或在多行模式下行的结尾,即紧随一换行符之前)
\b匹配单词的边界
\B匹配除单词边界以外的部分
[]匹配方括号中指定的任意一个原子
[^]匹配除方括兮中的原子以外的任意一个字符
()匹配其整体为一个原子,即模式单元,可以理解为由多个单个原子组成的大原子

官方演示代码:

from django.conf.urls import url
from . import views
urlpatterns = [
   url(r'^articles/2003/$',views.special_case_2003),
   url(r'^articles/([0-9]{4})/$',views.year_archive),
   url(r'^articles/([0-9]{4})/([0-9]{2})/$',views.month_archive),
   url(r'^articles/([0-9]{4})/([0-9]{2})/([0-9]+)/$',views.article_detail),
]

注意:

  • 不需要在前面加上‘/’(slash),举个栗子,要写成’^articles’, 而不是’ ^/articles’。
  • 在之前的’r’字母告诉Pyhton解释器这个String是一个“raw”— 原始字符串

原创文章,作者:cy,如若转载,请注明出处:https://www.cygzs.net/