import re
regex = re.compile(r"((?:\+|00)[17](?: |\-|\.)?|(?:\+|00)[1-9]\d{0,2}(?: |\-|\.)?|(?:\+|00)1\-\d{3}(?: |\-|\.)?)?(0\d|\([0-9]{3}\)|[1-9]{0,3})(?:((?: |\-|\.)[0-9]{2}){4}|((?:[0-9]{2}){4})|((?: |\-|\.)[0-9]{3}(?: |\-|\.)[0-9]{4})|([0-9]{7}))")
test_str = (" 12345678901\n"
" 12345678901x1234\n"
" 345678901x1234\n"
" 12344678901\n"
" 12345678901\n"
" 12345678901\n"
" 12345678901\n"
" +4112345678\n"
" +441234567890\n"
" 1 (234) 567-8901\n"
" 1 (234) 567-8901 x1234\n"
"01 23 45 56 78\n"
"335.23.23.23.23\n"
"0689912549\n"
"+33698912549\n"
"+33 6 79 91 25 49\n"
"+33-6-79-91-25-49\n"
"(555)-555-5555\n"
"555-555-5555\n"
"+1-238 6 79 91 25 49\n"
"+1-555-532-3455\n"
"+15555323455\n"
"55555555555555555555555555\n"
"+7 06 79 91 25 49\n"
"935 263223 64 949\n"
"067 9 91 254 9\n"
"331 23 45 56 78\n"
"331.23.45.56.78\n"
"331 23 45 56.78\n"
"33123455678\n"
"2312523125\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