import re
regex = re.compile(r"^.*\.((((c|C)(c|pp|xx|\+\+)?$)|((h|H)h?(pp|xx|\+\+)?$))|(ino|pde|proto|cu))$", flags=re.MULTILINE)
test_str = ("./test/known_fail/addition.c\n"
"./test/known_fail/addition.C\n"
"./test/known_fail/addition.cpp\n"
"./test/known_fail/addition.cc\n"
"./test/known_fail/addition.c++\n"
"./test/known_fail/addition.cxx\n"
"./test/known_fail/addition.ino\n"
"./test/known_fail/addition.pde\n"
"test/known_fail/addition.proto\n"
"test/known_pass/addition.proto\n\n"
"./test/known_fail/test.h\n"
"./test/known_fail/test.H\n"
"./test/known_fail/test.hpp\n"
"./test/known_fail/test.hh\n"
"./test/known_fail/test.h++\n"
"./test/known_fail/test.hxx\n\n"
"./.git/objects/13\n"
"./.clang-format\n\n\n")
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