Python中的正则表达式 - 匹配所有不包含...的内容 (App Engine)

2 投票
2 回答
886 浏览
提问于 2025-04-16 15:25

我刚开始使用App Engine的webapp框架,但我搞不清楚哪里出了问题:

我的网址结构是这样的,所有页面的前面都有一个/x/的前缀。例如:

http://site.com/x/my_account

http://site.com/x/profile

http://site.com/x/admin

等等等等……

现在我想让没有/x/前缀的页面由另一个处理程序来处理。这将是用户的页面。

举个例子:

http://site.com/user1

http://site.com/user2

这是我的WSGI应用程序

        application = webapp.WSGIApplication([
      ('/((?!/x/).)*$', Profile.ProfileMainHandler),
      ('/x', Misc.MainHandler),
      ('/x/', Misc.MainHandler),
      ('/x/videos', Videos.VideoHandler),
      ('/x/videos/add', Videos.VideoAddHandler),
              # etc etc, many more to list...

为什么这个不工作呢?/x/开头的处理程序都正常,但其他的页面却没有匹配到Profile.ProfileMainHandler。

一如既往,感谢你的耐心!

2 个回答

0

网址是按照顺序进行匹配的,从第一个到最后一个。只需要在所有匹配 /x 的网址模式后面加上一个 .* 的正则表达式就可以了。

2

应该是这样的:

'^/(?!x/|x$).*$'

撰写回答