我有一个URL,它要么是united-states/boulder-21781/tool-&-anchor/mulligan-21/
。假设最佳策略是对amp;进行编码,则url将更改为united-states/boulder-21781/tool-%26-anchor/mulligan-21/
我试图编写一个url conf来接受它,但是我使用的regex不起作用。我有:
url(r'^%(regex)s/%(regex)s-(\d+)/%(regex)s/%(regex)s-(\d+)/$' % {'regex'= '(?i)([\.\-\_\w]+)'}, 'view_tip_page', name='tip_page'),
我要添加什么来获取百分比?还是应该只包括;?在
好吧,目前没有办法让您在正则表达式中匹配}。根据是否编码,您需要将其中一个添加到正则表达式中的character类中,并且它应该匹配。在
%
或{我可以把它改成如下:
并证明其有效:
^{pr2}$关于regex的一些评论:
(?i)
实际上没有做任何事情,因为您使用的是\w
,它已经匹配了大小写。如果您确实想使用(?i)
,我会将它从替换字符串移到格式字符串('(?i)...' % {'regex': '...'}
而不是'...' % {'regex': '(?i)...'}
),否则它将出现多次。在注意字符类从
[\.\-\_\w]
改为[-.%\w]
,这是因为下划线包含在\w
中,如果连字符出现在字符类的开头,则不需要转义连字号,并且不需要转义字符类中的.
。在而且,},但我不想改变这一点,以防它有意添加一些额外的格式验证。在
\w
确实匹配数字,所以从技术上来说,为了匹配像boulder-21781这样的东西,您可以使用%(regex)s
而不是{我的第一个建议是不要这样做。正如您自己所演示的,并不是每个人都知道}更刺耳。话虽如此,如果你真的想把它放在那里,就把它放在character类里。在
&
是URI中第一个?
之前的一个完全有效的字符,您肯定会遇到麻烦。它看起来也很难看,更难输入,而且比and
,甚至是{与您的问题无关,您构建正则表达式的方式很奇怪;您没有捕获路径的任何部分供视图使用。您还包括了四次
(?i)
全局修饰符,并指定了_
,它已经是\w
的一部分。我不知道,我希望但也许我遗漏了什么。在
相关问题 更多 >
编程相关推荐