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

时间:2014-03-03 22:55:05

标签: 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

但没有用。

参考 https://developers.google.com/appengine/docs/python/config/appconfig

2 个答案:

答案 0 :(得分:1)

有两个错误:

  1. 您无法指向低于app.yaml级别的文件,因为Google App Engine无法处理任何外部文件,因此永远不要以../中的app.yaml开头文件。

  2. 正如您从文档中看到的那样,static_dir是一个将作为静态文件与应用程序一起上传的目录,因此尝试上传指向同一路径的两个目录不会即使正则表达式取得成功,这种感觉也很有可能会失败。

  3. 所以你的问题的答案是:这不可能。我建议将您要提供的所有文件放入与app.yaml位于同一级别(或更深层次)的文件夹中并将其指向该位置。

答案 1 :(得分:0)

- 垂直条|在你的第一个正则表达式中,将其“或”函数应用于左侧和右侧的全部内容,因此它实际上正在寻找“../app”或“.tmp / scripts”。

- 点是正则表达式中的一个特殊字符,它匹配除换行符之外的任何内容。它不会导致这些模式失败,因为它会与文字“。”相匹配,但它会使你的正则表达式更容易接受你可能想要的那样。

- 你的第二个模式实际上应该有效,但是如果你在该位置只有“app”或“.tmp”,那么你应该特意选择那些。

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

至于为什么你的第二个正则表达式没有成功匹配,可能是因为你的代码将正斜杠视为分隔符,在这种情况下你需要用反斜杠转义每一个:{{1} }