[Homework] Java Basics - Collections - September 2014
Здравейте,
ето моите решения на задачите /без 13-та задача/ от домашното - Java Collections Basics:
Homework - Java Collections Basics
Всякакви коментари и препоръки са добре дошли
Здравейте,
ето моите решения на задачите /без 13-та задача/ от домашното - Java Collections Basics:
Всякакви коментари и препоръки са добре дошли
Относно задачата с email-ите. Tози regex го мъдрих 1 час. Във всички варианти , които тествах работи.
За целите на примерите е повече от добър, дори в много по-опростен вариант ще работи. Но просто за идеята
\b[a-z0-9][a-z0-9-_\.]+\w+@[a-z\.-]*\.[a-z]{2,3} -> (вариант за regexr.com)
\\b[a-z0-9][a-z0-9-_\\.]+\\w+@[a-z\\.-]*\\.[a-z]{2,3} -> директно в кода с ескейпинга
\b[a-z0-9] -> задължително да започва със малкa буква или цифра
nikola_nikola@nikola.nikola.nikolov.abv.bg
local частта example@host.com от имейла е case sensitive по принцип, не не съм виждал някой да ползва големи букви, дори много email сървъри не поддържат upperCase и го конвертират в lowerCase.
[a-z0-9-_\.]+ -> следвано от малки букви и/или цифри, тире, долна черта и точка(която сме ескейпнали с "\"), по 1 или повече на брой
nikola_nikola@nikola.nikola.nikolov.abv.bg
\w+ -> задължително да завършва с character (включва alphanumerical и underscore) - така ще избегнем това nakov_-
@ -> да е следвано от кльомба
domain частта example@host.com е винаги caseInsesitive т.е. неможе да имаме големи букви, освен ако не е някаква правописна грешка. И ако въведем @ServEr.coM -> автоматично става @server.com
[a-z\.-]* -> да е следванo от малки букви и/или точка 0 или повече на брой
nikola_nikola@nikola.nikola.nikolov.abv.bg
\.[a-z]{2,3} -> да следва точка, следвана от 2 или 3 букви (примерно .com .bg)
nikola_nikola@nikola.nikola.nikolov.abv.bg
Единственото, което забелязах и не знам как се прави е да се селектира само, ако има по 1 точка,
опитах с [\.?] също и със [\.]{1}, но не става.
j.hopkin . . 64545@york.ac . . . . ud
Не претендирам, че в реалността има такъв имейл, целта ми е просто да си тренирам regex-a
"Единственото, което забелязах и не знам как се прави е да се селектира само, ако има по 1 точка, опитах с [\.?] също и със [\.]{1}, но не става."
Може ли да обясниш по-подробно какво искаш да направиш точно, за да те насоча?
Как да включа в условието на regex-a нещо което искам да се среща само 1 път като последователност, но 0 или повече пъти като цяло? Например
ivan.ivanov...ivanov@host..bg.com
да не го хвана, но
ivan.ivanov.ivanov@host.bg.com
това да.
Благодаря!
Това върши работа, но трябва да си го модифицираш според твоите нужди:
\b[a-zA-Z]+(\.?[a-zA-Z]+)+@([a-zA-Z]+\.)+[a-zA-Z]+\b
Тук предполагам, че точките отляво са незадължителни, а отдясно трябва да има поне една. Както казах, за да е верен един регекс, трябва много ясно да се знае по какви правила трябва да е изграден стринга, така че това, което ти копирах не е пълно.