Loading...

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

antonp1p2 avatar antonp1p2 17 Точки

Advanced C# [Подготовка за изпит]{Problem04} - Query Mess

Гледам в резултатите доста хора са я решили, та някой ако може да помогне малко. Тия регекси са ми малко тегави. Стигнах до някъде, изкарвам 3 от тестовете, но до там с моя регекс.

Ето до къде съм стигнал: http://pastebin.com/pfbzw5Cc

Къде бъркам с регекса ?

1
Fundamentals Module
enevlogiev avatar enevlogiev 1168 Точки

Виж, директно от Constraints:
SPACE is encoded as '+' or "%20". Letters (A-Z and a-z), numbers (0-9), the characters '*', '-', '.', '_' and other non-special symbols are left as-is.

Тук бъркаш с регекса. Логиката е добра, просто трябва да доизпипаш задачата. Не вярвам всички нулеви тестове да минават, те биха те насочили още по-добре.

 

1
antonp1p2 avatar antonp1p2 17 Точки
Не минaвaм третия нулев тест, знaм зaщо обaче се губя някъде из между тез charове дето игрaят ролятa нa space, a и кaто цяло не знaм дaли въобще хвaщaм логикaтa и прaвилния синтaксис нa тия регулярни изрaзи... мисля че товa което aз използвaм е дaлеч от товa което тряaбвa дa се използвa зa регекс тукa зa дa дaвa 100/100
0
KatyaMarincheva avatar KatyaMarincheva 572 Точки

Здравей Антоне,

За регекса си прав, като начало е по-изчистен от това с което аз бях започнала - аз търсех групи от символи които да имат "=" преди или след групата, с povitive lookbehind и positive loohahead - а от твоя регекс видях ( а и проверих), че е било излишно.

Има две неща обаче, които трябва да продължиш в решението за да даде 100 точки:

* първо, виж този трети нулев тест, който ти гърми: foo=%20foo, от двете страни на равното нямаш само word characters (\w), виж и поста на Едуард горе - никъде в условието не е обещано да има само word charcters. Затова можеш да промениш малко подхода към групите <key> и <value>: постави условие не какво да има в тях, а какво да няма - според условието на задачата в query sring не може да има "=", "&", question mark

* и като съберш всички двойки key=value, на втори етап, трябва да има приложиш втори regex, който търси spaces (+ или 20%), ги заменя с " " (единичен space).

И така ще ти даде 100 точки.

Това е най-полезното което научих напоследък за регексите - че може да създам 2, ако трябва и повече, и да ги прилагам на етапи.

 

0
20/05/2015 07:26:48
enevlogiev avatar enevlogiev 1168 Точки

"Това е най-полезното което научих напоследък за регексите - че може да създам 2, ако трябва и повече, и да ги прилагам на етапи."

Съвсем правилно, на изпит е особено полезно, защото е по-лесно за дебъгване и за откриване на грешки. Сега погледнах как съм я решавал тази задача, имам 2 "регекса" - [^&?]+ - с този търся matches. \+|%20 - с този реплейсвам whitespace. По-елегантно е да се направи с един мега-регекс, но определено е по-хюмън-френдли да си разбиеш задачката на под-задачки и да знаеш на кой етап какво се случва.

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