import re
regex = re.compile(r"^(?:.*)testhack(?:[[:alnum:][:blank:]\\\/\._-]*)(?<!\.git|\.gitignore)$", flags=re.IGNORECASE | re.MULTILINE)
test_str = ("/home/kwaadpepper/testhack\n"
"/home/kwaadpepper/testhack/TwitterReport\n"
"/home/kwaadpepper/testhack/test\n"
"/home/kwaadpepper/testhack/TwitterReport/.git\n"
"/home/kwaadpepper/testhack/TwitterReport/.gitignore\n"
"/home/kwaadpepper/testhack/TwitterReport/LICENSE\n"
"/home/kwaadpepper/testhack/TwitterReport/README.md\n"
"/home/kwaadpepper/testhack/TwitterReport/log_Error.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111731047.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111761057.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/log_reported_2015111762323.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/log_reported_201511176245.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/log_suspended.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/twitterReport.py\n"
"/home/kwaadpepper/testhack/TwitterReport/twitter_accounts.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/twitter_accounts2.txt.save\n"
"/home/kwaadpepper/testhack/TwitterReport/twitter_accounts3.txt\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/HEAD\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/branches\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/config\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-applypatch.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-commit.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-push.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/pre-rebase.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/prepare-commit-msg.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/hooks/update.sample\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/info/exclude\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/21\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/4d\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/59\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/69\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/70\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/objects/f9/00faba8624d5cbfee6032ad6266c6722b19457\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/tags\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/heads/master\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin\n"
"/home/kwaadpepper/testhack/TwitterReport/.git/refs/remotes/origin/HEAD")
matches = regex.finditer(test_str)
for match_num, match in enumerate(matches, start=1):
print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}")
for group_num, group in enumerate(match.groups(), start=1):
print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Python, please visit: https://docs.python.org/3/library/re.html