我是一个正则表达式的新手,我无法弄清楚如何设置这个模式的正则表达式我想做。
表达式意味着在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
这是非常错误的。任何帮助都会很棒。
答案 0 :(得分:4)
您错误地使用了*
。它是一个重复指示符,而不是多字符通配符;正则表达式语法中没有通用(可变长度)通配符。但是,有单字符通配符和准通配符。因此,例如,.*
匹配任何字符,零次或多次。 \S*
匹配零个或多个非空白字符。但是,在您的示例中,d*
连续匹配零个或多个d
。与e*
类似。
您需要使用某些内容来匹配其他字符。在这种情况下,您需要零个或多个非空白字符,因此您应该使用\S*
。您还应该转义/
个字符。当你的意思是文字.
而不是通配符时,你也需要转义.
。:
vars\/(prod\S*|stage\S*)\/(mysql|keys)\.yml