Найти - Пользователи
Полная версия: регулярное выражение для find_all_phones
Начало » Python для экспертов » регулярное выражение для find_all_phones
1
Alduin
В тексте мы будем искать номер телефона Украины в международном формате, шаблон которого: +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’ вернет следующий список

Нужна помощь!
py.user.next
  
>>> 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']
>>>
Alduin
А что означает символ :?
Alduin
А что тут нужно исправить?

Функция 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
Alduin
Отмена сделал все
py.user.next
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.
Короче, это группа, которая используется только для группирования символов внутри себя и которая снаружи группой не считается.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB