Python 配置文件regexp以匹配两个目录的或

Python 配置文件regexp以匹配两个目录的或,python,regex,google-app-engine,Python,Regex,Google App Engine,如何指定路径来为来自两个目录之一的文件提供服务,这两个目录类似于 - url: /scripts static_dir: ../(app|.tmp)/scripts 我希望任何对/scripts的调用都可以从任何一个 ../app/scripts ../.tmp/scripts 尝试了不同的选择,比如 static_dir: ../app|.tmp/scripts static_dir: ../(.*?)/scripts 但是没有起作用 参考文献 -第一个正则表达式中的竖条将其“or”

如何指定路径来为来自两个目录之一的文件提供服务,这两个目录类似于

- url: /scripts
  static_dir: ../(app|.tmp)/scripts
我希望任何对
/scripts
的调用都可以从任何一个

../app/scripts
../.tmp/scripts
尝试了不同的选择,比如

static_dir: ../app|.tmp/scripts
static_dir: ../(.*?)/scripts
但是没有起作用

参考文献
-第一个正则表达式中的竖条将其“or”功能应用于其左右两侧的全部内容,因此它实际上是在寻找“./app”或“.tmp/scripts”

-点是正则表达式中的一个特殊字符,它匹配除换行符以外的任何字符。这并没有导致这些模式失败,因为它将匹配文本“.”,但它使您的正则表达式更容易接受您可能想要的结果

-你的第二种模式应该是有效的,但如果你只打算在那个位置使用“app”或“.tmp”,那么你可能应该特别使用它们

因此,您的正则表达式应该如下所示:
\.\./(?:app\.tmp)/scripts


至于您的第二个正则表达式未能成功匹配的原因,可能是因为您的代码将正斜杠视为分隔符,在这种情况下,您需要使用反斜杠对每个正则表达式进行转义:
\.\.\/(?:app |\.tmp)\/scripts

。有两个错误:

  • 你不能指向比你的
    app.yaml
    级别低的文件,因为外部的内容都不是由Google app Engine处理的,所以千万不要从你的
    app.yaml
    文件中的
    开始

  • 正如您从文档中看到的,是一个将与应用程序一起作为静态文件上载的目录,因此尝试上载指向同一路径的两个目录没有多大意义,即使regexp成功,也很可能失败


  • 所以你的问题的答案是:这真的不可能。我建议您将所有要提供服务的文件放在一个与
    app.yaml
    处于同一级别(或更深)的文件夹中,并将其指向那里。

    +1谢谢。我在开发模式下做了…/它成功了。我可以使用符号链接将其保存在应用程序中。你的解释是什么。有道理。谢谢。它将在开发模式下工作,但是这些文件不会被上传,除非你打算对此做些什么。。符号链接可能有效。这可能是解决regexp问题的正确方法,但不能解决Google App Engine的OP问题。。