Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

arnold avatar arnold 50 Точки

*Extract Emails - регекс

Не мога да си открия грешката на регекса с тези имейл валидации. Истински кошмар са тези регески и просто няма как да се научат за няколко седмици, винаги има нещо в условието на задачите, което остава неизяснено и трябва да го отганеш тъй като отсъства в описанието на задачите.

Стигнах до 75/100 и вече се предавам, не знам какво повече иска, задачата се решава само с регекса. Закоментирал съм част от неуспешните регекси само с последния стигнах до 75 точки

https://pastebin.com/gT4P8bG5

 

https://judge.softuni.bg/Contests/Compete/Index/1668#5

 

*Extract Emails.

Write a program to extract all email addresses from a given text. The text comes at the only input line. Print the emails on the console, each at a separate line. Emails are considered to be in format <user>@<host>, where:

  • <user> is a sequence of letters and digits, where '.', '-' and '_' can appear between them.
    • Examples of valid users: "stephan", "mike03", "s.johnson", "st_steward", "softuni-bulgaria", "12345".
    • Examples of invalid users: ''--123", ".....", "nakov_-", "_steve", ".info".
  • <host> is a sequence of at least two words, separated by dots '.'. Each word is sequence of letters and can have hyphens '-' between the letters.
    • Examples of hosts: "softuni.bg", "software-university.com", "intoprogramming.info", "mail.softuni.org".
    • 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 for more information.

s.miller@mit.edu

j.hopking@york.ac.uk

Many users @ SoftUni confuse email addresses. We @ Softuni.BG provide high-quality training @ home or @ class. –- steve.parker@softuni.de.

steve.parker@softuni.de

Тагове:
0
Fundamentals Module 04/08/2021 12:38:05
Axiomatik avatar Axiomatik 2422 Точки
Best Answer

Extract Email can not be solved without Backreferences/Lookahead/LookBehind, fortunately on the exam there won't be any exercise with such a complex regex-structure. ;-)

Demo: 

using System;
using System.Text.RegularExpressions;

namespace extractEmails
{
    class Program
    {
        static void Main(string[] args)
        {
            string text = Console.ReadLine();
            string pattern = @"(^|(?<=\s))(([a-zA-Z0-9]+)([\.\-_]?)([A-Za-z0-9]+)(@)([a-zA-Z]+([\.\-][A-Za-z]+)+))(\b|(?=\s))";
            Regex regex = new Regex(pattern);
            MatchCollection matches = regex.Matches(text);
            if (regex.IsMatch(text))
            {
                foreach (Match email in matches)
                {
                    Console.WriteLine(email);
                }
            }
        }
    }
}

 

0
arnold avatar arnold 50 Точки

Благодаря за решението и доста сложен регекс, наистина регекските са материал, който трябва да се учи специално и отделно, така че дано на изпита не дадат нещо над нашето ниво на седмица-две.

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