如何在url conf中为此字符串获取正确的正则表达式?

时间:2012-10-11 02:09:43

标签: python regex url youtube-api

目前的正则表达式是:

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

我现在一直在尝试,并且无法让它工作,其中title(最后一个参数)将接受以下2个示例字符串:

有什么建议吗?

修改

当我将它作为标题的参数传递时,以下是一些不起作用的文本: 国家棒球名人堂展示了6件洋基队的季后赛纪念品:1923年世界大赛的一枚表; Babe Ruth的蝙蝠来自1926年的世界大赛; Yogi Berra的手套来自Don Larsen在1956年的完美比赛; 1962年世界大赛的最后一球; 1996年世界大赛的Derek Jeter球衣;马里亚诺·里维拉的帽子来自2000年的地铁系列。

http://www.buzzfeed.com/sports

2 个答案:

答案 0 :(得分:2)

\w+是一个只与字母数字字符和下划线匹配的正则表达式。 我会尝试对你给出的例子给出一个严格的解决方案,以及一个更适合你的例子。

由于您希望匹配w组中未包含的其他字符,因此您应该创建一个自定义组,添加您需要的特殊字符。 要组成一个组,可以在方括号[]之间进行编写。 要向组中添加字符,只需将它们一个接一个地写入,除了-,因为它可以定义范围,您必须将它放在前面。 对于第一个示例,您需要匹配括号和加号等字符,这些字符对于正则表达式是特殊的,因此必须进行转义。 对于+ - &gt;用+ 对于( - &gt;使用( 所以第一个例子的正则表达式将开始如下所示: [\w\(\)\+]+ 有关正则表达式的备忘单,您可以查看:Cheat sheetdownloadable 在开头添加 - 符号以避免范围,以及其他转义和非转义字符。一个匹配两个字符串的组看起来像:

[-\w\/\?:=\.\s!\(\)"\+]+

由于这很复杂,你似乎想要得到几乎任何标题作为标题我推荐特殊组.,因为它包含任何字符,除了换行符。

正则表达式看起来非常简单: .+

答案 1 :(得分:0)

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

应该让你到那儿。只需在视频匹配后捕获所有内容,直到最终/

相关问题