Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 17, 2023 02:46:27

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

В тексте мы будем искать номер телефона Украины в международном формате, шаблон которого: +380(67)777-7-777 или +380(67)777-77-77

Напишите регулярное выражение для find_all_phones, которая будет в тексте (параметр text) находить все телефонные номера по указанному шаблону и возвращать список полученных из текста совпадений.

С целью упрощения примем, что:

используем только цифры и символы +, (, ) и -
телефонный номер начинается с символа +
шаблон телефона символ + затем три цифры 380, символ (, две цифры, символ ), три цифры, символ –, одна или две цифры, символ –, две или три цифры
Длина шаблона телефонного номера всегда 17 символов.


 import re
def find_all_phones(text):
    print(text)
    result = re.findall(r"(\+380\(\d{2}\)\d{3}-\d{1,2}-\d{2,3})", text)
    print(result)
    return result

Функция find_all_phones возвращает неправильный результат: . Ожидалось, что функция find_all_phones при получении параметра ‘Irma +380(67)777-7-771 second +380(67)777-77-77 aloha a@test.com abc111@test.com.net +380(67)111 -777-777+380(67)777-77-787’ вернет следующий список

Нужна помощь!

Офлайн

#2 Янв. 17, 2023 09:00:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

  
>>> import re
>>> 
>>> pat = r'\+380\(\d{2}\)\d{3}-\d(?:-\d{3}|\d-\d{2})'
>>> 
>>> text = """
... Irma +380(67)777-7-771 second +380(67)777-77-77 aloha a@test.com abc111@test.com.net +380(67)111 -777-777+380(67)777-77-787
... """
>>> 
>>> out = re.findall(pat, text)
>>> out
['+380(67)777-7-771', '+380(67)777-77-77', '+380(67)777-77-78']
>>>



Отредактировано py.user.next (Янв. 17, 2023 21:36:23)

Офлайн

#3 Янв. 17, 2023 16:25:26

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

А что означает символ :?

Офлайн

#4 Янв. 17, 2023 16:39:33

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

А что тут нужно исправить?

Функция find_all_links возвращает неверный результат: . Ожидалось, что функция find_all_links при получении параметра 'The main search site in the world is https://www.google.com social network http://github.com There they share their code. some url to check https://www..facebook.com www.facebook.com ' вернет следующий список

 import re
def find_all_links(text):
    result = []
    iterator = re.finditer(r"\bhtt.{1,2}\://\w{1,}\.\w{1,}.\w{1,}", text)
    for match in iterator:
        result.append(match.group())
    return result

Офлайн

#5 Янв. 17, 2023 16:54:11

Alduin
Зарегистрирован: 2023-01-10
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

Отмена сделал все

Офлайн

#6 Янв. 17, 2023 21:38:07

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

регулярное выражение для find_all_phones

Alduin
А что означает символ :?
https://docs.python.org/3/library/re.html
(?:…)

A non-capturing version of regular parentheses. Matches whatever regular expression is inside the parentheses, but the substring matched by the group cannot be retrieved after performing a match or referenced later in the pattern.
Короче, это группа, которая используется только для группирования символов внутри себя и которая снаружи группой не считается.



Отредактировано py.user.next (Янв. 17, 2023 21:39:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version