I am using pre-commit to run some hooks, and I have a regex where I only include a list of files (dirs) that I wish to run the hook on. The problem is that my regex matches exact string + any other appending string to the first string.
hooks:
- id: xdoc
files: (?=(analytic|authentication|store))
exclude: (?=(apps|serializers|admin|test|migrations|__init__.py))
stages: [commit]
here I have initially two apps starting with the string store:
store
storespecifics
The above regex matches both, where I am only trying to match exact store.
I tried for example (?=^(analytic|authentication|store)$), but nothing gets matched.
>Solution :
There’s no need to involve positive lookaheads here as pre-commit uses re.search to match paths. This is probably closer to what you want:
files: ^(analytic|authentication|store)/
exclude: (apps|serializers|admin|test|migrations|__init__.py)
Note that I use a / here to make sure we’re at a folder boundary (matching store/foo.py but not storespecifics/foo.py)
I also anchor the match to the beginning with ^. If that’s not desirable you’d probably replace the ^ with a /.
Disclaimer: I wrote pre-commit.