2

当前的正则表达式是:

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

我一直在尝试一段时间,但无法让它在 title (最后一个参数)将接受以下 2 个示例字符串的情况下工作:

有什么建议吗?

编辑

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

http://www.buzzfeed.com/sports

4

2 回答 2

2

\w+是一个仅匹配字母数字字符和下划线的正则表达式。我将尝试为您提供的示例提供一个严格的解决方案,以及一个可能对您也适用的更通用的解决方案。

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

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

由于这很复杂,并且您似乎想要获得几乎任何东西作为标题,我推荐特殊组.,因为它包含除换行符之外的任何字符。

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

于 2012-10-11T02:48:17.800 回答
0
url(r'^partner/(?P<author>[-\w]+)/(?P<video>\w+)/(?P<title>.*)/$', 'video_player'),

应该送你到那里。只需在视频比赛后捕获所有内容,直到决赛 /

于 2012-10-11T03:11:31.847 回答