前言
最近学习Django,路由分发时,遇到一个疑问点,url(r'^detail/(?P<id>\d+)/(?P<slug>[-\w]+)/$', views.image_detail, name='detail')
,[-\w]
代表啥意思呢。解决后分享一下。
干货
\w: 匹配字母、数字、下划线。等价于'[A-Za-z0-9_]'。
[xyz]: 字符集合,匹配x、y、z任一字符
[\w]: 匹配字母、数字、下划线
[-\w]: 匹配字母、数字、下划线和 -
[@#%-\w]: 匹配字母、数字、下划线和 -、@、#、%
栗子
import json, re
dd = {"data": {"XB-afea46d26a0f0b2d016a0f516710007c": ["17", "$#$%@"]}}
tt = json.dumps(dd)
pattern1 = '"([\w]+)"' #原字符集
pattern2 = '"([-\w]+)"' #加了-
pattern3 = '"([-@#$%\w]+)"' #加了@#$%
print(re.findall(pattern1, tt))
print(re.findall(pattern2, tt))
print(re.findall(pattern3, tt))
#输出
['data', '17']
['data', 'XB-afea46d26a0f0b2d016a0f516710007c', '17']
['data', 'XB-afea46d26a0f0b2d016a0f516710007c', '17', '$#$%@']
自己动手敲一下代码,便于理解。
网友评论