Loading...
tt104 avatar tt104 15 Точки

75/100 - задача 4 от пайтън фундаменшълс (регулярни изрази) "4. Extract Emails"

4. Extract Emails
Write a program that receives a single string and extracts all email addresses from it. Print the extracted email
addresses on separate lines. Emails are in the format "{user}@{host}", where:
   •    {user} could consist only of letters and digits; the symbols ".", "-" and "_" can appear between them.
            o   Examples of valid users: "stephan", "mike03", "s.johnson", "st_steward", "softuni-
                bulgaria", "12345"
            o   Examples of invalid users: ''--123", ".....", "nakov_-", "_steve", ".info"
   •    {host} is a sequence of at least two words, each couple of words must be separated by a single dot ".".
        Each word consists of only letters and can have hyphens "-" between the letters.
            o   Examples of valid hosts: "softuni.bg", "software-university.com",
                "intoprogramming.info", "mail.softuni.org"
            o   Examples of invalid hosts: "helloworld", ".unknown.soft." , "invalid-host-",
                "invalid-"
Examples of valid emails: info@softuni-bulgaria.org, kiki@hotmail.co.uk, no-reply@github.com,
s.peterson@mail.uu.net, info-bg@software-university.software.academy
Examples of invalid emails: --123@gmail.com, …@mail.bg, .info@info.info, _steve@yahoo.cn,
mike@helloworld, mike@.unknown.soft., s.johnson@invalid-
Examples
                                        Input                                                       Output
 Please contact us at: support@github.com.                                             support@github.com
 Just send email to s.miller@mit.edu and j.hopking@york.ac.uk                          s.miller@mit.edu
 for more information.                                                                 j.hopking@york.ac.uk
 Many users @ SoftUni confuse email addresses. We @                                    steve.parker@softuni.de
 Softuni.BG provide high-quality training @ home or @ class.
 –- steve.parker@softuni.de.

Моето 108-мо решение:

import re
s = str(input())
if len(s) > 0 and '.' == s[-1]: s = s[:len(s)-1]
for e in s.split():
    e = e.lower()
    m = e.split("@")
    if len(m) != 2: continue;
    a = re.fullmatch(r'([a-z0-9][a-z0-9\.\-_]*[a-z0-9]|[a-z0-9])', m[0])
    if not a: continue;
    n = m[1].split(".")
    if len(n) < 2: continue;
    p = False
    for q in n:
        if not re.fullmatch(r'([a-z][a-z\-]*[a-z]|[a-z])', q):
            p = True
            break;
    if p: continue
    print(e)

75/100

Свел съм нещата до максимално простички. Кое от условията не покривам? (Имам и вариант без регулярни изрази който филтрира варианти като a--b@foo.net - не е това)

Бихте ли дали насоки за валиден/невалиден вх./изх.

Благодаря предварително.

Тагове:
0
Python Fundamentals
tt104 avatar tt104 15 Точки

Скритото условие:

--- a/bar.py~
+++ b/bar.py
@@ -4,7 +4,7 @@ import re
 s = str(input())
 if len(s) > 0 and '.' == s[-1]: s = s[:len(s)-1]
 for e in s.split():
-    e = e.lower()
+    e = e.lower().strip(",")
     m = e.split("@")
     if len(m) != 2: continue;
     a = re.fullmatch(r'([a-z0-9][a-z0-9\.\-_]*[a-z0-9]|[a-z0-9])', m[0])

100/100

Можехте да напишете, че "фоо@бар.нет," е "валиден" и-мейл - а.к.а. пунктуацията може да бъде елиминирана от израза.

 

 

<оплакване> Тази игра на "познай какво се иска" е доста досадна; това което дразни най-много, е загубата на време (7 часа в случая). </оплакване>

0
28/07/2023 08:58:22
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.