Python正则表达式不工作-Django

Python正则表达式不工作-Django,python,regex,django,Python,Regex,Django,我正在尝试匹配文本:details/1234/ 使用正则表达式:r'^details/(?p[0-9]+)/$” 其中,article_id作为参数传递给表达式。这不会在Pythex和(显然)Django上返回任何匹配项 我还尝试: r'^details/(?p\w+/$”但这也不会返回任何内容。我迷路了。有人能帮忙吗 例如:string:localhost:8080/details/1234/为什么不使用urlparse来帮助您呢 from urlparse import urlparse

我正在尝试匹配文本:
details/1234/

使用正则表达式:
r'^details/(?p[0-9]+)/$”

其中,article_id作为参数传递给表达式。这不会在Pythex和(显然)Django上返回任何匹配项

我还尝试:

r'^details/(?p\w+/$”
但这也不会返回任何内容。我迷路了。有人能帮忙吗


例如:string:
localhost:8080/details/1234/

为什么不使用urlparse来帮助您呢

from urlparse import urlparse

d = urlparse('http://localhost:8080/details/1234')
输出:

ParseResult(scheme='http', netloc='localhost:8080', path='/details/1234', params='', query='', fragment='')
获取路径:

>>> d.path
'/details/1234'
>>>
如果要在提取路径后使用正则表达式,则可以使用正则表达式,只需稍加修改:

我添加了
/?
,它将查找“/”或否“/”

^/?详细信息/(?p[0-9]+)$

pythex将其提取为:


article\u id 1234

为什么不使用urlparse来帮助您呢

from urlparse import urlparse

d = urlparse('http://localhost:8080/details/1234')
输出:

ParseResult(scheme='http', netloc='localhost:8080', path='/details/1234', params='', query='', fragment='')
获取路径:

>>> d.path
'/details/1234'
>>>
如果要在提取路径后使用正则表达式,则可以使用正则表达式,只需稍加修改:

我添加了
/?
,它将查找“/”或否“/”

^/?详细信息/(?p[0-9]+)$

pythex将其提取为:

article\u id 1234

试试这个

/详细信息\/(?p[0-9]+)/$/

我删除了开头的
^
符号。因为该符号(称为克拉)试图搜索模式,而您的模式
details/…
不会从行的开头开始

我还删除了
r
(),然后将
/
字符转义为一致:) 试试这个

/详细信息\/(?p[0-9]+)/$/

我删除了开头的
^
符号。因为该符号(称为克拉)试图搜索模式,而您的模式
details/…
不会从行的开头开始

我还删除了
r
(),然后将
/
字符转义为一致:)

在这里,您尝试传递一个“Django风格”的url,其开头带有克拉
^
。Django知道,URL.py中的所有URL都是相对的,并且应该以127.0.0.1:8000或localhost:8080或启动runserver时或在
设置.py中设置的任何URL开头。Pythex不知道这一点,因此它尝试查找路径以“/details/…”开头的任何匹配项,当然失败了。因此,从正则表达式的开头去掉一克拉就可以了

但是,正如Daniel Roseman已经提到的,这在django中应该可以很好地工作。

在这里,您尝试在开始时传递一个带有克拉的“django风格”url。Django知道,URL.py中的所有URL都是相对的,并且应该以127.0.0.1:8000或localhost:8080或启动runserver时或在
设置.py中设置的任何URL开头。Pythex不知道这一点,因此它尝试查找路径以“/details/…”开头的任何匹配项,当然失败了。因此,从正则表达式的开头去掉一克拉就可以了



但是,正如Daniel Roseman已经提到的,这在django中应该可以很好地工作。

您能否提供一个包含“details/1234”的示例,您正在对您的正则表达式使用该示例。使用示例字符串更新问题该模式是正确的,适用于URL“localhost:8080/details/1234/”您的正则表达式具有线锚的结尾和开头。您的示例末尾没有
/
。因此,您的正则表达式无法与您的示例相匹配。@DanielRoseman-添加了Pythex的屏幕截图。似乎不起作用:(@RonRosenfeld您建议我做什么更改?我删除了第二个尾随斜杠并尝试了
localhost:8080/details/1234
,还尝试了
localhost:8080/details/1234/
与给定的正则表达式。Pythex在这两种情况下都没有找到匹配项。您能提供一个包含“details/1234”的示例吗您正在对正则表达式使用的。更新了问题,带有示例字符串。该模式正确,适用于URL“localhost:8080/details/1234/”您的正则表达式具有线锚的结尾和开头。您的示例末尾没有
/
。因此您的正则表达式无法与您的示例匹配。@DanielRoseman-添加了一个scre来自Pythex的enshot。似乎不起作用:(@RonRosenfeld你建议我做什么更改?我删除了第二个尾随斜杠,尝试了
localhost:8080/details/1234
,还尝试了
localhost:8080/details/1234/
,使用给定的正则表达式。Pythex在这两种情况下都没有找到匹配项。我添加了Pythex的屏幕截图-你能告诉我这里有什么错误吗?是的s、 去掉“^”。“^”意味着从字符串的开头开始。我从正则表达式中删除了它,它就起作用了。如果你使用URLPRASE,然后应用正则表达式,它就会起作用。实际上,对正则表达式进行一点小的修改也会对你有所帮助。我会更新我的答案。这似乎在Pythex上起作用。但在Django上不起作用-我有po这里有一个Django版本的问题:如果你擅长Django,你能看看你是否能帮我吗?我添加了一个Pythex的屏幕截图-你能告诉我我在这里是否做错了什么吗?是的。去掉“^”。“^”意味着从字符串的开头开始。我从你的正则表达式中删除了它,它就起作用了。如果你使用urlparse,然后应用你的正则表达式它会起作用。事实上,对你的正则表达式进行一个小小的修改也会对你有所帮助。我会更新我的答案。这似乎在Pythex上起作用。但在Django上不起作用-我在这里发布了一个Django版本的问题:如果你对Django很在行,你能看看你能不能在这方面帮助我吗?这似乎确实是在Pythex上工作。但不是在Django上-我在这里发布了一个Django版本的问题:如果你擅长Django,你能看看你能不能帮我吗?嗯,我不擅长Django,但是