Софтуерно Инженерство
Loading...
+ Нов въпрос
ivailo.hristov avatar ivailo.hristov 2 Точки

[Regular Expressions]Problem 5.Extract Emails

Здравейте,колеги!!!

Имам проблем със задачата Extract Emails.
Това  ми е опита за разрешаване на проблема,но в джъдж ми дава 50/100 и не ми идва на акъл защо.Молбата ми е някой да ми каже защо става така общо взето.Благодаря предварително :)

Тагове:
1
Java Advanced
kosio197 avatar kosio197 104 Точки

Привет,

Това виждам аз:
1. Трябва да започва с white space.

2. [a-z0-9] - Може да съдържа и главни букви - A-Z

3. След @ не може да има цифри.

4. \\.[a-z]{2,3} - Tова 2,3 ще се отрази само на a-z, без точката. Освен това трябва да е минимум едно, но максимум няма т.е. трябва ти +

Ето един който работи:

"\\s(([0-9A-Za-z][\\.-0-9a-zA-Z]*[A-Za-z0-9])|([a-zA-z0-9]))@(([A-Za-z][-a-zA-Z]*[A-Za-z])|([A-Za-z]))(\\.(([A-Za-z][-a-zA-Z]*[A-Za-z])|([A-Za-z])))+";

 

1
LardaX avatar LardaX 15 Точки

Принципно тук [\\.-0-9a-zA-Z] няма ли да търси едновременно . и -? Тоест не трябва ли да се разделят с | ?

Моят вариант (не знам до колко е правилен, но judge го приема) е:
string pattern = @"\s([0-9A-Za-z]+(-*|_*|\.*)[0-9a-zA-Z]*@[a-z]+-*[a-z]*(\.[a-z]+)+\b)"

Друго, което исках да питам има ли друг вариант, който не почва мейла с white space? При мен също се получи само с него, но се чудех дали няма и друг начин, защото теоретично, ако изречението ти започва с мейла няма да го хване.

*Току що видях отговор на втория си въпрос в кода на колегата по-долу - ^|\\s - ако правилно разбирам това му казва, че или стринга трябва да започва с търсения от нас израз, или преди израза трябва да има разстояние, нали така?

0
20/10/2016 23:45:26
gimoch avatar gimoch 7 Точки

Здравейте,

http://pastebin.com/0GrJQFZc

получавам 75/100,предполагам,че защото хваща имейла ако пред него има примерно "-"(без него разбира се).Пробвах да го огранича слагайки "^" най-отпред,но не става.Някакви идеи как да го оправя ?
 

0
17/06/2016 22:31:33
gimoch avatar gimoch 7 Точки

Благодаря :)

 

0