import re
regex = re.compile(r"^(?=.*g)[fghlotu]{4,}$", flags=re.MULTILINE)
test_str = ("// SB from 2019-10-05\n"
"// centerLetter: g\n"
"// outerLetters: f,h,l,o,t,u\n\n"
"// wrong letters\n"
"bread\n"
"butter\n"
"bigger\n"
"ogogogx\n"
"xogogog\n\n"
"// too short\n"
"gut\n"
"log\n"
"fgt\n\n"
"// no center letter\n"
"trout\n"
"lotto\n"
"full\n\n"
"// tricky cases that should match (made up words)\n"
"ogogog\n"
"gogog\n"
"ogogo\n"
"oggoggo\n"
"ggogg\n"
"ggoo\n"
"oogg\n\n"
"// actual solutions\n"
"thoughtful\n"
"flog\n"
"fought\n"
"fugu\n"
"ghoul\n"
"glut\n"
"golf\n"
"goof\n"
"googol\n"
"goth\n"
"gout\n"
"guff\n"
"gulf\n"
"gull\n"
"logo\n"
"ought\n"
"outfought\n"
"outgo\n"
"outthought\n"
"though\n"
"thought\n"
"thug\n"
"tough\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