[Homework]:C# Advanced- Regular Expressions
05.Valid Usernames
08.Use Your Chains, Buddy
Не са отворени за тестване на C#.
05.Valid Usernames
08.Use Your Chains, Buddy
Не са отворени за тестване на C#.
http://pastebin.com/1iNk81At - Решението ми на 8, ако някой може да подскаже защо ми дава 44/100 ще съм много благодарен
http://pastebin.com/kpbkqSnk - 7 за 100/100
Здравейте,
Аз имам един въпрос по 5-та зада - Valid Usernames. Най - вероятно проблема ми е в regeex-a. В judge ми дава 90/100 (един грешен отговор).
Ето и израза, който използвам:
string pattern = @"(?<=\W|^)([a-zA-Z]+[a-zA-Z0-9_]*){3,25}(?=\W|$)";
Първоначално използвах това:
string pattern = @"(?<=\W|^)(\w{3,25})(?=\W|$)";
Но се оказа, че username не може да започва с цифра... Пробвах кода по - горе :
string userName = @"\b\w{3,25}\b";
Но тогава пък ми дава 70 от 100 точки...
Ето го и целия код:
Някой може ли да погледне и да ми каже къде бъркам?
Поздрави,
Иван
@"[a-zA-Z][a-zA-Z0-9_]{2,24}";
Забележи, че при твоя вариант ще намериш между 3 и 25 пъти целият израз, затова след първата буква би трябвало да търсиш между 2 и 24 симсвола.
Тези look-ahead/look-behind може да ги избегнеш като просто сплитнеш по посочените символи. Ако искаш да ги ползваш ще трябва да посочиш изрично всички символи, \W няма да свърши работа, то хваща много неща, които са невалидни.
Здравейте,
Ще използвам темата за да вмъкна, че във C# групите могат да се избират не само по индекс, но и по име, понеже във лекцията за Regular Expressions се казва че във Mtach-a групите могат да се избират само по индекс, дори да са именовани.
Около домашното разгледах(наложи ми се :)) и много отговори във StackOverflow и там видях някой да ги използва по име, ето за какво говоря (това е част от задачата Extract Hyperlinks):
private static List<string> ExtractLinks(string html)
{
var ancorHrefPattern =
new Regex(@"<a\s+[^>]*?\bhref\s*?=\s*?(""|')(?<href>[\S\s]*?)(\1)[\S\s]*?>");
var extracted = new List<string>();
foreach (Match m in ancorHrefPattern.Matches(html))
{
extracted.Add(m.Groups["href"].Value);
}
return extracted;
}
Не го казвам, за да се заяждам, просто в някой случей, като по - горния, е много удобно и е хубаво да се знае.
Иначе във Debugger-a ги дава само по индекс
Че каква би била ползата от именованите групи, ако не можеха да се достъпват по име... Могат да се достъпват и по двете, мисля, че и в PHP е така.
Здравейте, относно Query Mess, следният код ми дава 66 точки. Мен ми убягва защо, но ще съм благодарен, ако някой успее да открие грешката:
Най-добре си изтегли тестовете(има ги качени под заглавието на задачата в джъджа). Виж на кои тестове ти гърми. Подай ги като входни данни. Виж какво се очаква и какво получаваш. Ако не успееш да се сетиш пиши, ще помагаме :)
хах, мерси, хванах си грешките - за replace хващах по един +, а то има случаи с повече, също така бях пропуснал момента с ?, че също е разделител.
Видях и твоето решение - доста десетливо да replace - неш в предварително, а след това да направиш regex за намаляване на space:)
Аз се опитах да хвана всички възможности с Regex, и сбърках ...
https://softuni.bg/trainings/1070/JavaScript-Basics-Nov-2014
От тука най-отдолу си свали тестовете и виж на кой ти гърми. Въведи входните данни, виж изходните и мини с дебъгера да видиш къде се разминаваш.