python - Django URL 正则表达式出现类型错误

标签 python regex django

嗨,我总是对正则表达式感到困惑,而且我不明白对其他帮助线程的响应。

基本上我的问题是,我可以合并

r'^input/?$'

r'^input/index.html?$'

进入这个?

r'^input(/(index.html?)?)?$'

在 Django 中,我收到此错误:

input() takes exactly 1 argument (3 given)

它仅在正确匹配时给出错误,所以也许这不是正则表达式问题?

最佳答案

就我个人而言,我不希望将这两个正则表达式结合起来。我认为有两种 url 模式,

url(r'^input/?$', input, name="input"),
url(r'^input/index.html?$', input),

比一个更具可读性。

但是,如果您确实想将两者结合起来,则可以使用非捕获括号:

r'^input(?:/(?:index.html?)?)?$'

一个简单的例子可能有助于解释:

>>> import re
>>> # first try the regex with capturing parentheses
>>> capturing=r'^input(/(index.html?)?)?$'
>>> # Django passes the two matching strings to the input view, causing the type error
>>> print re.match(capturing, "input/index.html").groups()
('/index.html', 'index.html')
>>> # repeat with non capturing parentheses
>>> non_capturing=r'^input(?:/(?:index.html?)?)?$'
>>> print re.match(non_capturing, "input/index.html").groups()
()

请参阅Regular Expression Advanced Syntax Reference页面了解更多信息。

关于python - Django URL 正则表达式出现类型错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10826342/

相关文章:

Python SSL Socket 客户端认证

python - 如何为 ActiveMQ 使用 AMQP python 客户端

java - 用于查找一组数字中重复出现的数字集的正则表达式

java - Android:正则表达式 matcher.find() 的问题始终返回 false

c# - 如何分隔字符串中的段落?

mysql - 每个对象的不同字段集

python - 如何使用 django 正确显示用户生成的图像?

python - 我将如何清除/删除跨列具有重复值的行?

python - 什么是低内存使用的良好数据库?

python - MediaDefiningClass 对象不可迭代?