目前的正则表达式是:
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年的地铁系列。
答案 0 :(得分:2)
\w+
是一个只与字母数字字符和下划线匹配的正则表达式。
我会尝试对你给出的例子给出一个严格的解决方案,以及一个更适合你的例子。
由于您希望匹配w
组中未包含的其他字符,因此您应该创建一个自定义组,添加您需要的特殊字符。
要组成一个组,可以在方括号[]之间进行编写。
要向组中添加字符,只需将它们一个接一个地写入,除了-
,因为它可以定义范围,您必须将它放在前面。
对于第一个示例,您需要匹配括号和加号等字符,这些字符对于正则表达式是特殊的,因此必须进行转义。
对于+ - &gt;用+
对于( - &gt;使用(
所以第一个例子的正则表达式将开始如下所示:
[\w\(\)\+]+
有关正则表达式的备忘单,您可以查看:Cheat sheet或downloadable
在开头添加 - 符号以避免范围,以及其他转义和非转义字符。一个匹配两个字符串的组看起来像:
[-\w\/\?:=\.\s!\(\)"\+]+
由于这很复杂,你似乎想要得到几乎任何标题作为标题我推荐特殊组.
,因为它包含任何字符,除了换行符。
正则表达式看起来非常简单:
.+
答案 1 :(得分:0)
url(r'^partner/(?P<author>[-\w]+)/(?P<video>\w+)/(?P<title>.*)/$', 'video_player'),
应该让你到那儿。只需在视频匹配后捕获所有内容,直到最终/