所以我正在使用 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/