【问题标题】:django urlpattern for repeating group?django urlpattern 用于重复组?
【发布时间】:2013-10-07 07:04:02
【问题描述】:

我正在尝试在 django(1.5) 中进行一些类别/子类别路由。 我有 5 个类别的级别,可能看起来像。

url(r'^(?P<category>\w*)/$', SearchResults.as_view(), name='search_results'),
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/$', SearchResults.as_view(), name='search_results'),
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/$', SearchResults.as_view(), name='search_results'),
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/(?P<sublevel3>\w*)/$', SearchResults.as_view(), name='search_results'),
url(r'^(?P<category>\w*)/(?P<sublevel1>\w*)/(?P<sublevel2>\w*)/(?P<sublevel3>\w*)/(?P<sublevel4>\w*)/$', SearchResults.as_view(), name='search_results'),

但我想知道是否有更好的方法来做到这一点? 带有重复模式或类似模式的正则表达式。

谢谢。

【问题讨论】:

  • 如果你还想保留命名组,我不这么认为。
  • 不会保留偶数。我相信按/ 拆分会更容易。

标签: python regex django django-urls


【解决方案1】:

对于正则表达式模式,组的数量是“在编译时固定的”。您需要创建一个与您的模式的 n 次重复匹配的组,然后在捕获它后将其拆分。

你需要使用^(?P&lt;categories&gt;(?:[\w]+\/?)+)$之类的东西

那么在你看来,

categories = filter(bool, categories.split('/'))

【讨论】:

    猜你喜欢
    • 2015-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多