Есть задача: напишите функцию, принимающую строку с номерами телефонов, перечисленными через запятую и приводящую их в формат +7(xxx)xxx-xx-xx. В случае же, если номер не подходит под формат, выводить INCORRECT_FORMAT вместо номера. Регулярную функцию под формат написала. Как лучше задать условия для перебора номеров?
Если необходимо именно искать номера с помощью регулярных выражений, то всё, что понятно из условия задачи, это то, что в номерах не содержится запятая, все остальные символы они вполне могут содержать. Отсюда регулярное выражение: "\b" - начало слова, "[^,]+" - любое количество любых символов, кроме запятой, "\b" - конец слова:
re.findall(r'\b[^,]+\b', string)
string - исходная строка с телефонными номерами
Однако, регулярные выражения использовать не обязательно, если номера перечислены только через запятую. Проще всего разбить строку методом ".split(',')" или "split(', ')", если после запятой есть пробел. В крайнем случае можно использовать "re.split('\s*,\s*', string)", чтобы убрать все пробелы в начале и конце номеров(до и после запятой).
Довольно удобно использовать регулярное выражение, чтобы перед разбивкой убрать все лишние символы из исходной строки, оставив только знак "+" и цифры(и, конечно же, запятые):
numbers = re.sub('[^+0-9,]', '', string).split(',')
Слова, не содержащие цифры и "+" тоже останутся(в виде пустых строк), и вместо них тоже можно будет вывести INCORRECT_FORMAT.
Спасибо)