Софтуерно Инженерство
Loading...
mgulubov avatar mgulubov 74 Точки

Колега, ако все още те интересува :), аз успях да получа 100/100 с доста мъки, гледане на тестовете и ето този regex:

(?:<a)(?:[\s\n_0-9a-zA-Z=""()]*?.*?)(?:href([\s\n]*)?=(?:['""\s\n]*)?)([a-zA-Z:#\/._\-0-9!?=^+]*(\([""'a-zA-Z\s.()0-9]*\))?)(?:[\s\na-zA-Z=""()0-9]*.*?)?(?:\>)

Също така, ползвам StringBuilder, за да направя целия input в един string. Това е цялото решение: цък.

Честно казано, ако на изпита се падне нещо подобно, с толкова много вариации на regex-a, не виждам как може да се изкара пълния набор точки, без да се гледа input-a. Но пък, може и моята логика да е грешна :).

П.С. Само да добавя, че има един ugly-fix, който проверява за string "fake" във върнатия резултат. Без него, на последния тест, хваща href='fake', но не успях да нагодя regex-a да го скипва :).

6
27/05/2015 12:48:25
antonp1p2 avatar antonp1p2 17 Точки

Евала колега. Тоя регекс бая си се занимавал докато го нагодиш. Ако се падне такава задача на изпита лично аз въобще няма да я мъча оставям я за накрая колкото време ми остане ще я пробвам, колкот да мина няколко от тестовете ама 100/100 никога няма да мога да изкарам.

1
27/05/2015 16:51:14
LardaX avatar LardaX 15 Точки

Брат, не знам как си сътворил този регекс, но ще остане вечен! Има отредено място в историята на СофтУни. За много студенти, той ще направи разликата между 83 и 100 точки на домашното :D :D

0
iliyamar avatar iliyamar 13 Точки

mgulubov Поздравления за решението и от мен. Имам само един лек коментар към регекса само. Комбинацията \s\n е безсмислена, защото \s (whitespace) включва в себе си и \n. Получават се 100% и ако навсякъде смениш \s\n само с \s. Това, което ми харесва най-много е, че не те е домързяло да сложиш ".*", както бихме направили повечето, а си изборил старателно възможните символи, избягваки разни подводни камъни. Решението ти ми беше полезно!

0