Loading...
sevdalin avatar sevdalin 38 Точки

Тестван Regex онлайн, не работи в C#?

Здравейте колеги, започнах да решавам Regex и тъкмо бях щастлив, че си направих Pattern-ни сравнително бързо за 2-те задачки от упражненията и като ги пуснах в C# не работеха. Не мога да открия защо, моля някой да ми помогне.

Задача 1: http://pastebin.com/YuSRG4jF

Задача 2: http://pastebin.com/4NAcbmzp

 

Благодаря ви!

0
C# Advanced
Willbe.S avatar Willbe.S 5 Точки

Не съм го тествала, но от пръв поглед мисля, че проблема ти е във foreach-а и на двете задачи.

Първата Console.Write(matches + " "); - трябва да е match

Втората - foreach (MatchCollection match in matches) - трябва да е Match, a не MatchCollection (това и в първата трябва да го оправиш)

Пробвай и виж дали ще се оправи :)

1
21/02/2016 11:34:03
sevdalin avatar sevdalin 38 Точки

Поправих ги тези неща и забелязах, че поради някаква причина String-a ми се беше счупил и той като съм го слагал, сега проработи :) 

Но на задачата Match Phone Number имам един въпрос, който не мога да си обесня. В условието се казва "Ensure that before the '+' sign there is either a space or the beginning of the string", което мисля, че го спазвам със следния Код, защото при проверката  ми ето тук https://regex101.com/r/zW4iC7/1, показва че работи както уж се иска от задачата. Но когато принтирам на конзолата се появява следния резултат:

(Празен ред)
59-2-222-2222
+359 2 222 2222
+359-2-222-2222
Press any key to continue . . .

И не мога да разбера, защо се чупи така.

0
sevdalin avatar sevdalin 38 Точки

Добре аз имам някакъв напредък, окрих, че не съм си модифицирал String-a в C# и сега имам следния резултат при

String phoneNumber = @" +359-2-222-2222, +359/2/222/2222, +359-2 222 2222, +359 2-222-2222, +359-2-222-222, +359-2-222-22222, 
                                +359 2 222 2222, +359-2-222-2222";

string pattern = @"^|[+359]+(-| )[2]\1[\d]{3}\1[\d]{4}\b";

(Празен ред отново, не знам от къде идва)

+359-2-222-2222
+359 2 222 2222
+359-2-222-2222

НО

Ако изтрия Space-a в началото на PhoneNumber string-a @"+359-2-222-2222, +359/....." ми изкарва само това:

(Празен ред отново, не знам от къде идва)

359-2-222-2222
+359 2 222 2222
+359-2-222-2222

Нали в pattern му казвам: "^" което означава началото на всеки нов ред, "|" или... . Пробвах да го направя "^|\s....." за да окаже, началото на всеки нов ред или space и след това хвани еди кое си, но по този начин първия номер ми го изпуска и изкарва само последните 2 резултата. Някаква идея какво и къде греша?

0
21/02/2016 12:11:09
KrasimirStefanov avatar KrasimirStefanov 1 Точки

Заповядай '[\+359]{4}[\-|\/| ][\d]+[\/|\-| ][\d]+[\/|\-| ]{1}[\d]+'

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