匹配选项列表中的确切字符串

Match exact string from list of options

我正在使用预提交 运行 一些挂钩,并且我有一个正则表达式,其中我只包含我希望 运行 挂钩的文件(目录)列表。问题是我的正则表达式与第一个字符串完全匹配+任何其他附加字符串。

hooks:
- id: xdoc
  files: (?=(analytic|authentication|store))
  exclude: (?=(apps|serializers|admin|test|migrations|__init__.py))
  stages: [commit]

这里我最初有两个以字符串 store:

开头的应用程序
store
storespecifics

上面的正则表达式匹配两者,我只是想精确匹配 store。 例如,我试过 (?=^(analytic|authentication|store)$),但没有任何匹配项。

这里没有必要涉及正面前瞻,因为 pre-commit uses re.search to match paths -- 这可能更接近您想要的:

        files: ^(analytic|authentication|store)/
        exclude: (apps|serializers|admin|test|migrations|__init__.py)

请注意,我在这里使用 / 以确保我们处于文件夹边界(匹配 store/foo.py 但不匹配 storespecifics/foo.py

我还用 ^ 将匹配锚定到开头,如果这不是您想要的,您可能会将 ^ 替换为 /


免责声明:我写了预提交