Я пытаюсь извлечь номера телефонов из многих файлов писем. Я написал код регулярного выражения для их извлечения, но получил результаты только для одного формата.
PHONERX = re.compile("(\d{3}[-\.\s]??\d{3}[-\.\s]??\d{4}|\(\d{3}\)\s*\d{3}[-\.\s]??\d{4}|\d{3}[-\.\s]??\d{4})")
phonenumber = re.findall(PHONERX,content)
Просмотрев данные, я обнаружил, что существует множество форматов телефонных номеров.
Как я могу извлечь все телефонные номера, которые имеют этот формат вместе:
800-569-0123
1-866-523-4176
(324)442-9843
(212) 332-1200
713/853-5620
713 853-0357
713 837 1749
Эта ссылка является образцом для набора данных. проблема заключается в том, что когда-то номера телефонов извлекают регулярное выражение из messageId и других номеров в письме © 0
2 ответа
Вы можете использовать:
\(?(?:1-)?\b[2-9][0-9]{2}\)?[-. \/]?[2-9][0-9]{2}[-. ]?[0-9]{4}\b
Который будет соответствовать всем вашим примерам + игнорировать ложные срабатывания, например:
113 837 1749
222 2222 22222
Вам не нужно включать все возможности, используя логическое ИЛИ. Вы можете использовать следующее регулярное выражение:
(?:\(\d+\)\s?\d*|\d+)([-\/ ]\d+){1,3}
См. демо-версию
Для использования с re.findall()
используйте не захваченную группу:
(?:\(\d+\)\s?\d*|\d+)(?:[-\/ ]\d+){1,3}
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.