import re
regex = re.compile(r"^(?=(.{0,1500}language[^\n]*\n[^\n]*\n[^\n]*))(?=(.{0,1500}experience[^\n]*\n[^\n]*\n[^\n]*))(?=(.{0,1500}acquire[^\n]*\n[^\n]*\n[^\n]*))", flags=re.MULTILINE | re.DOTALL)
test_str = ("materials the in the case of language\n"
"what was taken further than assumed sort\n"
"of again though experiments but seems\n"
"obvious is that the basic elements\n"
"of language say concepts or words if\n"
"there's any difference between them\n"
"those must be primarily generated\n"
"internally their complexity and richness\n"
"is such that they can't possibly be\n"
"acquired from experience they were what\n"
"were called the common notions or innate\n"
"ideas formed by some internal generative\n"
"process that's structured in some\n"
"fashion this and there was a good but\n"
"about how this is done suggesting that\n"
"what's involved is you start with but\n"
"are now called gustave properties\n"
"notions of casual relation notions of\n"
"agency anthropomorphic perspectives all\n"
"familiar with the way we perceive and\n"
"think about the natural world\n"
"so you see you you talk about a comet as\n"
"aiming towards the Earth and fortunately\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