用于匹配具有前缀的目录的正则表达式模式

Regex pattern to match directories with a prefix

我是正则表达式的新手,我不知道如何为我正在尝试做的这种模式设置正则表达式。

表达式应该在 Python 预提交脚本中,如果提交的文件匹配它,它将 运行 预提交挂钩。

我的示例文件列表

vars/prod-region1/mysql.yml
vars/prod-region1/keys.yml
vars/prod-region1/test.yml
vars/stage-region2/mysql.yml
vars/stage-region2/keys.yml
vars/stage-region2/test.yml
vars/local/mysql.yml
vars/local/test.yml

我需要一个正则表达式模式来匹配属于以下目录模式的文件

我现在的努力是

vars/(prod*|stage*)/(mysql|keys).yml

这是严重错误的。任何帮助都会很棒。

您使用 * 不正确。它是一个重复指示器,而不是一个多字符通配符;正则表达式语法中没有通用(可变长度)通配符。但是,有单字符通配符和准通配符。因此,例如,.* 匹配任何字符,零次或多次。 \S* 匹配零个或多个非空白字符。但是,在您的示例中,d* 连续匹配零个或多个 d。与 e*.

类似

您需要使用一些东西来匹配额外的字符。在这种情况下,您需要零次或多次非空白字符,因此您应该使用 \S*。您还应该转义 / 字符。当您指的是文字 . 而不是通配符时,您还需要转义 .。:

vars\/(prod\S*|stage\S*)\/(mysql|keys)\.yml

Here's a demo.