Я читаю «Автоматизируйте скучные вещи с помощью Python». Прямо сейчас я застрял в главе 7 (часть Regex). Существует шаблон для американских телефонных номеров, который я хочу реализовать для украинских телефонных номеров.
Украинские номера могут появляться в разных форматах, таких как: +380445371428, +38 (044) 5371428, +38 (044) 537 14 28, +38 (044) 537-14-28, +38 (044) 537.14.28, 044.537.14.28, 0445371428, 044-537-1428, (044) 537-1428, 044 537-1428,и т.д.
Ниже приведена моя реализация, но она не совсем верна. Что мне нужно?
- Когда я копирую некоторые страницы веб-сайта, из всей информации, которую я скопировал, я хочу извлечь украинский номер, отображаемый в этом (044-537-1428) формате.
phoneRegex = re.compile(r'''(
(^\+38?) # area code(not necessarily)
(\d{3}|\(\d{3}\)) # carrier code(usually starts with 0
(\s|-|\.)? # separator
(\d{3}|\(\d{3}\)) # first 3 digits
(\s|-|\.) # separator
(\d{4}) # last 4 digits
(\s*(ext|x|ext.)\s*(\d{2,5}))? # extension
)''', re.VERBOSE)
шаблон для американского номера (согласно книге) выглядит следующим образом
phoneRegex = re.compile(r'''(
(\d{3}|\(\d{3}\))?
(\s|-|\.)
(\d{3})
(\s|-|\.)
(\d{4})
(\s*(ext|x|ext.)\s*(\d{2,5}))?
)''', re.VERBOSE)