python - 停止捕获基于 Django 中的 url 的任何字符串(正则表达式)

标签 python regex django django-urls

所以我正在使用 Django 构建网络服务,但我在 Urls 中遇到了正则表达式问题。

我想转到 localhost/user/USERNAME/products/,其中用户名可以是任何字符,而不仅仅是\w。我试着用这个捕捉它:

('^user/(?P<username>.+)/$', 'user'),
('^user/(?P<username>.+)/products/$', 'get_products'),

但是它会捕获用户名“USERNAME/products”并将其发送给用户。对于除零以外的任何长度,我应该如何说除前斜杠之外的每个可能的字符?

最佳答案

使用 [^/]+ 而不是 .+

正如 Chris Pratt 在下面指出的那样,.+? 也可以工作,因为它是一个“非捕获”正则表达式,它将匹配任何字符,直到匹配到以下子表达式。在可能的情况下,我通常更喜欢普通的急切解决方案而不是非捕获解决方案,因为它们不引入多个评估规则。

关于python - 停止捕获基于 Django 中的 url 的任何字符串(正则表达式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9773350/

相关文章:

python - 如何修复 Mac OS X 10.5 Leopard 上默认 Python 包中损坏的 BSDDB 安装?

Python 2.7 : Pytz : ImportError: cannot import name timezone

regex - 如何根据时间间隔获取这些错误/不匹配字符串

python - 推送失败的 heroku

python - 我想将文件作为 API POST 请求的附件发送

python - 如何在Python中表示所有导入的模块

用 "*"替换每个字符\d 的 Ruby 单行正则表达式?

regex - oracle中使用正则表达式获取数据

javascript - 范围不更新模型中的更改

python - Django Query 设置用于计算每个月的记录