正则表达式分组匹配 uuid

我model中使用了uuid,在urls中进行路由匹配时我做了以下几种尝试。

string: UUID('16fd2706-8baf-433b-82eb-8c7fada847da')

最初: 我是这么写:

 url(r'^qs/(?P<uuid>[^/]+)/$',....) (这样泛匹配,不好,做如下修改)


 url(r'^qs/(?P<pk>[A-Fa-f0-9]{8}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{4}-[A-Fa-f0-9]{12})/$',....)  (这样又太冗长,有人指点用分组做,于是有下面优化)


 url(r'^qs/(?P<pk>[A-Fa-f0-9]{8}-([A-Fa-f0-9]{4}-){3}[A-Fa-f0-9]{12})/$',...)   这是将中间重复的分组利用了,但是[A-Fa-f0-9]这个却一直重复....

我想继续分组,将[A-Fa-f0-9]分组利用,但是始终却出现错误...我是这么写的:

 url(r'^qs/(?P<pk>(?<oo>[A-Fa-f0-9]){8}-\k<oo>{4}-\k<oo>{4}-\k<oo>{4}-\k<oo>{12})/$'

却报错:

"^qs/(?P<pk>(?<oo>[A-Fa-f0-9]){8}-\k<oo>{4}-\k<oo>{4}-\k<oo>{4}-\k<oo>{12})/$" is not a valid regular expression: syntax error     

贴出来,希望得到指点...我这样写有点分组嵌套的感觉,但又不知道怎么改善,所以看看大家怎么写

阅读 11.4k
1 个回答
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题