Професионална програма
Loading...
lapd87 avatar lapd87 103 Точки

[EXERCISE] String Processing - Problem {16} - Extract Hyperlinks

Привет колеги,

ако може малко помощ :)

улесних леко нещата с този код https://pastebin.com/cR5DW3p5

сега остана да извадя линковете от списък с атрибути

<a   href="/"  id="home">Home</a>
<a class="selected" href=/courses>Courses</a>
<a href = '/forum' >Forum</a>
<a class="href"onclick="go()" href= "#">Forum</a>
<a id="js" href ="javascript:alert('hi yo')" class="new">click</a>
<a id='nakov' href =http://www.nakov.com class='new'>nak</a>
<a href="#empty"></a>
<a href="#">&lt;a href='hello'&gt;</a>
<a href="#commented">commentex hyperlink</a>

мъчих с нещо такова

.+?href[\s]*?=[\s]*(["']*)(.+?)\1[^=]+>

но не ми се получава с кавичките... 

0
Java Advanced
k.sevov avatar k.sevov 1077 Точки

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

Edit: Не виждам някаква лесна корекция, която да оправи регекса честно казано. Пробвах се и аз първо да използвам група за кавичките и с backreference, но не намерих как да се комбинира ефективно със случаите без никакви кавички - или едното се чупи, или другото. 

2
31/05/2018 23:40:57
lapd87 avatar lapd87 103 Точки

и аз това се чудех има ли начин ако няма кавички след това да не търси, ако има единични да спре при първите единични, ако са двойни при първите двойни...

0
lapd87 avatar lapd87 103 Точки

с твоя регекс и моето решение до момента направих това https://pastebin.com/5yRhPz3Z обаче с грешни тестове 3,5,6. 

Някакви идеи какво пропускам?

0
k.sevov avatar k.sevov 1077 Точки

Не работи правилно за случаите на някакви нестнати тагове в <a> тага, може би нещо такова има в тестовете. Проверката със сплита ще ги изкарва невалидни.

1
01/06/2018 09:37:36
lapd87 avatar lapd87 103 Точки

мда... можеше да се сетя :D

след като махнах сплита ми остана 6ти тест грешен...

0
01/06/2018 10:21:34
k.sevov avatar k.sevov 1077 Точки

Ако махнеш само сплита мисля остава проблем ако примерно нямаш href в <a>, но имаш такъв в някой нестнат таг (който не е <а>) - регекса ще го хване и изпечата. 

1
lapd87 avatar lapd87 103 Точки

е то така вече се обезмисля идеята да не ползвам голям и нечетим регекс :)

Мерси колега оправих го вече, както ти си го направил.

0
stoiko.bogev avatar stoiko.bogev 78 Точки

Това е регекс на мое решение: <a.+?href\\s*=\\s*(.+?)\\s*>.+?</a>

0