我有麻烦找出Django的URL的Python正则表达式。我有一定的标准,但似乎无法拿出神奇的公式。最后,我可以确定哪个页面是CMS页面,并传递给django函数应该加载的别名url。Python的正则表达式:字符串不包含“JPG”,并且必须有“ - ”和小写字母
以下是有效的字符串一些例子将匹配:
- 关于美国
- 接触我们
- 条款和条件
- 信息/学习,更-PG2
- info/my-example-url
基准:
- 必须全部小写
- 必须包含一个破折号“ - ”
- 可以包含数字,字母和一个斜杠“/”
- 必须至少包含4个字符长,30个字符 一个最大
- 不能包含特殊字符
- 不能包含单词:
- 的.jpg
- .gif注意:
- png格式
- 的.css
- 的.js
例子不应该匹配:
- 关于-US(有大写)
- 联系我们(没有破折号)
- pg(小于4字符RS)
- IMG/bg.gif(包含符 “.gif ”)
- 文件/我-Styles.css中(包含“ 的CSS”)
- 我页@(含有字母,数字等字符,破折号或斜线)
我知道这是不是差得远呢,但这是据我已经得到了:
(?P<alias>([a-z/-]{4,30}))
我为有大的要求道歉,但我可以别把我的脑袋缠住这个正则表达式的东西。
谢谢!
嘛,有些人要求的东西,如计算的字符数本身是很难在一个正则表达式做。 另外,我的理解是,网址不区分大小写。 (至少,任何时候我去一个网站,我使用大写字母,我到达,他们都是小写字母数字。) 此外,测试_for_“存在”和类似的东西比否定它更容易。你能先给他们一个规则,在它达到这个规则之前过滤掉它们中的urls吗? – 2010-11-05 18:58:49
我有另一个URL结构只包含大写字母,没有斜杠或破折号,所有的CMS页面都是小写的破折号。此外,长度不是优先考虑的事情,如果它不能完成,或者它的表现很糟糕,我可以放弃它。 – adam 2010-11-05 19:02:02
@Tyr:在正则表达式中如何计算字符很难?另外,URL不区分大小写,至少不是域之后的部分,如果你在Apache上(我认为)。 – 2010-11-05 20:38:08