Google应用引擎正则表达式

2024-10-04 01:30:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个googleappengine项目,我遇到了一个窘境。下面应该(如果正则表达式是正常的)将不包含单词“test”的所有内容重定向到MainPage类,其余的重定向到TestPage类。在

application = webapp.WSGIApplication(
                                     [
                                        ('[^(test)]*', MainPage),
                                        ('.+', TestPage)
                                     ],
                                     debug=True)

相反,我发现正则表达式正在被解释:

^{pr2}$

这意味着任何包含t、e或s的内容都不会直接指向MainPage(在本例中,它将直接指向TestPage)。显然,解决方法是重新编写TestPage regex,但我不想做任何修改。这个应该可以在不重写的情况下工作。在

我是不是错过了某个图书馆?这是配置问题吗?在运行run_wsgi_app之前调用函数或设置属性的问题要小得多,但这看起来不一致。在


更新

原来罪魁祸首是两件事。首先,这是我在语法上的一个错误。其次,我用来确认正则表达式的工具说,该表达式与“test”不匹配,但它将匹配“test”。在


Tags: 项目debugtesttrue内容application单词重定向
3条回答

实际上,它被解释为除了方括号中的前导插入符号之外的字符的任何重新排列,例如[^est()]。标准正则表达式语法不包括指定由特定正则表达式匹配的语言补码的直接方法。在

在这种情况下,你不需要担心。按照Erik Noren的建议,更改匹配表达式的顺序,如下所示:

application = webapp.WSGIApplication(
                                     [
                                        ('test', TestPage)
                                        ('.+', MainPage),
                                     ],
                                     debug=True)

这直接实现了同样的结果。在

为什么不把它倒过来呢?与检查[不是'测试']相比,检查测试更简单。将匹配的路由到TestPage,其余的路由到MainPage。在

区别(不起作用):

'[^(test)]*'

以及

^{pr2}$

除非我完全弄错了。在

regex中的方括号表示法是一组字符,parens在其中没有特殊含义。因此[^(test)]匹配除“t”、“e”、“s”、“(”或“)”以外的任何字符

相关问题 更多 >