Google应用引擎正则表达式

cwa*_*ole 1 python regex google-app-engine

我正在开发一个Google appengine项目,但我遇到了一个窘境.以下应该(如果正则表达式是正常的)将不包含单词"test"的所有内容重定向到MainPage类,其余部分重定向到TestPage类.

application = webapp.WSGIApplication(
                                     [
                                        ('[^(test)]*', MainPage),
                                        ('.+', TestPage)
                                     ],
                                     debug=True)
Run Code Online (Sandbox Code Playgroud)

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

('[^tes]*', MainPage)
Run Code Online (Sandbox Code Playgroud)

这意味着包含at,e或s的任何内容都不会指向MainPage(在这种情况下,它将指向TestPage).显然,解决方法是重新编写TestPage正则表达式,但我不想进行解决.这应该可以在不重写的情况下工作.

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


UPDATE

事实证明,罪魁祸首是两件事.首先,我的语法错误(Mea culpa).其次,我用来确认正则表达式的工具表示表达式与"test"不匹配,但它匹配"t est".

Jer*_*man 7

实际上,除了方括号内的主要插入符之外,它被解释为与字符的任何重新排列相同,例如[^est()].标准正则表达式语法不包括指定特定正则表达式匹配的语言的补充的直接方式.

在这种情况下,您不必担心这一点.按照Erik Noren的建议改变匹配表达式的顺序,如下所示:

application = webapp.WSGIApplication(
                                     [
                                        ('test', TestPage)
                                        ('.+', MainPage),
                                     ],
                                     debug=True)
Run Code Online (Sandbox Code Playgroud)

这直截了当地实现了相同的结果.