【发布时间】:2015-09-29 17:42:06
【问题描述】:
我是正则表达式的绝对菜鸟(我有点了解基础知识并且需要帮助一个单词或一个短语。如果它是一个短语,那么用连字符分隔每个单词 - :
这是我当前的正则表达式,它只匹配一个单词:
r'^streams/search/(?P<stream_query>\w+)/$
?P 只允许 URL 接受参数。
额外说明:我正在使用带有 Django urls.py 的 python re 模块
有什么建议吗?
这里有一些例子:
game
gsl
starcraft-2014
final-fantasy-iv
word1-word2-word-3
更新说明: 我基本上需要一个正则表达式来扩展当前的,所以在同一个正则表达式中,没有其他的:
r'^streams/search/(?P<stream_query>\w+)/$
所以在这个里面包含新的正则表达式,其中 ?P\w+ 是 Django 认为是参数的任何单词(并被传递到函数中)。
URL 定义,其中包括正则表达式: url(r'^streams/search/(?P\w+)/$', 'stream_search', name='stream_search')
然后,Django 将该参数传递给 stream_search 函数,该函数接受该参数:
def stream_search(request, stream_query):
#here I manipulate the stream_query string, ie: removing the hyphens
所以,再一次,我需要一个 re 来匹配一个单词或短语,它们被传递到 stream_query 参数(或者如果需要,第二个)。 所以,我希望 stream_query 拥有的是:
word1
或 word1-word2-word3
【问题讨论】:
-
你能举一个你试图匹配的两个案例的例子吗?
-
我不确定你想要什么。我假设您想要给定单词和短语的正则表达式。我建议用 "[a-z]+" 表示一个单词,用 [a-z\-] 表示用连字符分隔的单词
-
@Darwin 刚刚添加了几个例子
-
@alexcons 你能提供整个网址的例子吗?
-
@Darwin example.com/streams/search/rocket-league-word3-word4 或 example.com/streams/search/word1
标签: python regex django url django-urls