Skip to main content
 首页 » 编程设计

python之谷歌应用引擎正则表达式

2025年05月04日22tuyile006

我正在从事 Google 应用引擎项目,但遇到了一个难题。以下应该(如果正则表达式是正常的)将不包含单词“test”的所有内容重定向到 MainPage 类,并将其余内容重定向到 TestPage 类。

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

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

('[^tes]*', MainPage) 

这意味着任何包含 t、e 或 s 的内容都不会指向 MainPage(在本例中,它将指向 TestPage)。显然,解决方法是重新编写 TestPage 正则表达式,但我不想做一个解决方法。这应该无需重写即可工作。

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


更新

事实证明,罪魁祸首是两件事。首先,这是我在语法方面的错误(Mea culpa)。其次,我用来确认正则表达式的工具说该表达式不会匹配“test”,但会匹配“t est”。

请您参考如下方法:

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

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

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

这直接实现了相同的结果。