C# Advanced {Подготовка за изпита в Judge} - [Problem03] Extract Hyperlinks
Колеги някой може ли да даде едно рамо тук. Нещо не мога да докарам регекс-а така че да хване всичко което ми трябва на третия нулев тест.
Колеги някой може ли да даде едно рамо тук. Нещо не мога да докарам регекс-а така че да хване всичко което ми трябва на третия нулев тест.
Колега, ако все още те интересува :), аз успях да получа 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 да го скипва :).
Евала колега. Тоя регекс бая си се занимавал докато го нагодиш. Ако се падне такава задача на изпита лично аз въобще няма да я мъча оставям я за накрая колкото време ми остане ще я пробвам, колкот да мина няколко от тестовете ама 100/100 никога няма да мога да изкарам.
Брат, не знам как си сътворил този регекс, но ще остане вечен! Има отредено място в историята на СофтУни. За много студенти, той ще направи разликата между 83 и 100 точки на домашното :D :D
mgulubov Поздравления за решението и от мен. Имам само един лек коментар към регекса само. Комбинацията \s\n е безсмислена, защото \s (whitespace) включва в себе си и \n. Получават се 100% и ако навсякъде смениш \s\n само с \s. Това, което ми харесва най-много е, че не те е домързяло да сложиш ".*", както бихме направили повечето, а си изборил старателно възможните символи, избягваки разни подводни камъни. Решението ти ми беше полезно!