繁体   English   中英

如何获得此字符串的正确正则表达式?

[英]How do I get the correct regex for this string?

当我将其作为描述参数(包括其后的返回字符和url)传递给我时,有些文字无法正常工作。 我在django上做。

合伙人/ BuzzFeed / fXkqhhIlOtA / NY洋基:季后赛大事记的6件重要作品/国家棒球名人堂展示了洋基6季后赛事事的纪念品:来自1923年世界大赛的手表; 贝贝·露丝(Babe Ruth)从1926年世界大赛中获得的蝙蝠; 尤吉·贝拉(Yogi Berra)的手套来自唐·拉尔森(Don Larsen)1956年的完美比赛; 1962年世界大赛的最后一个球; 1996年世界大赛冠军Derek Jeter的球衣; Mariano Rivera的帽子来自2000地铁系列。 http://www.buzzfeed.com/sports/

urlpatterns = patterns('reserve.views',
    url(r'^partner/(?P<partner_name>[-\w]+)/$', 'partner_channel'),
    url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/$', 'video_player'),
    url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/(?P<title>.+)/(?P<desc>.+)/$', 'video_player'),
    url(r'^category/(?P<category>[-\w]+)/$', 'all_partners'),
    url(r'^admin/', include(admin.site.urls)),
)

如何更改desc参数的正则表达式以允许此操作?

编辑:

找不到请求网址页面(404):

http:/localhost:8000/partner/BuzzFeed/fXkqhhIlOtA/NY%20Yankees:%206%20Essential%20Pieces%20of%20Postseason%20Memorabilia/The%20National%20Baseball%20Hall%20of%20Fame%20shows%20off%206%20pieces%20of%20Yankees%20postseason%20memorabilia:%20a%20watch%20from%20the%201923%20World%20Series;%20Babe%20Ruth's%20bat%20from%20the%201926%20World%20Series;%20Yogi%20Berra's%20glove%20from%20Don%20Larsen's%20perfect%20game%20in%201956;%20the%20last%20out%20ball%20in%20the%201962%20World%20Series;%20Derek%20Jeter's%20jersey%20from%20the%201996%20World%20Series;%20Mariano%20Rivera's%20hat%20from%20the%202000%20Subway%20Series.%0A%0Ahttp://www.buzzfeed.com/sports/

问题是您的标题匹配是贪婪的,并且比您想要的匹配更多,并且分隔您的节的/被包含在标题中,而desc是最后一个/(位于url中)之后的所有内容

将其更改为非贪婪(?P<title>.+?)

url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/(?P<title>.+?)/(?P<desc>.+)/$', 'video_player'),

给它s选项。 默认情况下, . 匹配换行符以外的任何字符。 另外,您需要使标题部分不贪心,否则标题将与您的整个说明匹配。 使用.+? 而不是.+这样做。

您的urlpatterns被覆盖(可能不正确)。 您有两种与“ video_player”匹配的模式,但没有与“ desc”匹配的模式:

url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/$', 'video_player'),
url(r'^partner/(?P<author>[-\w]+)/(?P<video>[-\w]+)/(?P<title>.+)/(?P<desc>.+)/$', 'video_player'),

将最后一个网址标识符从上方更改为“ video_player”以外的其他内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM