import re
regex = re.compile(r"(?=\d{2,3}9\d+)(?<!\d)(\d{11,12})(?!\d)|(?<!\d)(\d{2}\s\d{5}\s\d{4})(?!\d)|(?<!\d)(0\d{2}\s\d{5}\s\d{4})(?!\d)|(?<!\d)(\d{2}\s9\s\d{4}\s\d{4})(?!\d)|(?<!\d)(0\d{2}\s9\s\d{4}\s\d{4})(?!\d)|(?<!\d)(\d{9})(?!\d)|(?<!\d)(\d\s\d{8})(?!\d)|(?<!\d)(\(\d{2}\)\d{9})(?!\d)|(?<!\d)(\(0\d{2}\)\d{9})(?!\d)|(?<!\d)(\(\d{2}\)\d{1}\s\d{4}\s\d{4})(?!\d)|(?<!\d)(\(0\d{2}\)\d{1}\s\d{4}\s\d{4})(?!\d)|(?<!\d)(\(\d{2}\)\s\d{1}\s\d{4}\s\d{4})(?!\d)|(?<!\d)(\(0\d{2}\)\s\d{1}\s\d{4}\s\d{4})(?!\d)", flags=re.MULTILINE)
test_str = ("---> DEVE ENCONTRAR:\n"
"11991234567 // /¯¯¯¯¯\n"
"011991234567 // | (?=\\d{2,3}9\\d+)(?<!\\d)(\\d{11,12})(?!\\d)\n"
"119111111111 // \\_____\n"
"11 99123 4567 // (?<!\\d)(\\d{2}\\s\\d{5}\\s\\d{4})(?!\\d)\n"
"011 99123 4567 // (?<!\\d)(0\\d{2}\\s\\d{5}\\s\\d{4})(?!\\d)\n"
"11 9 9123 4567 // (?<!\\d)(\\d{2}\\s9\\s\\d{4}\\s\\d{4})(?!\\d)\n"
"011 9 9123 4567 // (?<!\\d)(0\\d{2}\\s9\\s\\d{4}\\s\\d{4})(?!\\d)\n\n"
"---> DEVE ENCONTRAR (EXEMPLOS DA PERGUNTA + ALGUMAS EXTENSÕES):\n"
"993345987 // (?<!\\d)(\\d{9})(?!\\d)\n"
"9 93345987 // (?<!\\d)(\\d\\s\\d{8})(?!\\d)\n"
"(21)932324343 // (?<!\\d)(\\(\\d{2}\\)\\d{9})(?!\\d) ## OU: (?<!\\d)(\\d{9})(?!\\d)\n"
"(021)932324343 // (?<!\\d)(\\(0\\d{2}\\)\\d{9})(?!\\d) ## OU: (?<!\\d)(\\d{9})(?!\\d)\n"
"(21)9 3232 4343 // (?<!\\d)(\\(\\d{2}\\)\\d{1}\\s\\d{4}\\s\\d{4})(?!\\d)\n"
"(021)9 3232 4343 // (?<!\\d)(\\(0\\d{2}\\)\\d{1}\\s\\d{4}\\s\\d{4})(?!\\d)\n"
"(21) 9 3232 4343 // (?<!\\d)(\\(\\d{2}\\)\\s\\d{1}\\s\\d{4}\\s\\d{4})(?!\\d)\n"
"(021) 9 3232 4343 // (?<!\\d)(\\(0\\d{2}\\)\\s\\d{1}\\s\\d{4}\\s\\d{4})(?!\\d)\n\n\n"
"NÃO DEVE ENCONTRAR:\n"
"11 99123 45671\n"
"111 99123 4567\n"
"011 99123 45678\n"
"811 99123 45678\n"
"a9999999999999999999989999123\n"
"118111111111\n"
"123456789123456789\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