import re
regex = re.compile(r"^(\+7|[7,8]\ ?)(\d{10}|(\(?\d{3}\)?\ ?\d{3}[\-,\ ]?\d{2}[\-,\ ]?\d{2}))$", flags=re.MULTILINE)
test_str = ("+79855310868\n"
"79855310868\n"
"7 985 531 08 68\n"
"+7(999)459-88-65\n"
"8 (999) 459-88-65\n"
"880084545454\n"
"88008454545411\n"
"465456465465\n"
"784545487878\n"
"12125465415646\n"
"454658498797894\n"
"231321546545\n"
"231321321316548\n"
"7889213554654\n"
"84456464641\n"
"89855310868")
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