Въпросът ми не е директно свързан с домашното, но тъй като възникна докато го писах, реших направо да го публикувам в тази тема.
Та, може ли в регулярен израз да се вкарат променливи и как?
Въпросът ми не е директно свързан с домашното, но тъй като възникна докато го писах, реших направо да го публикувам в тази тема.
Та, може ли в регулярен израз да се вкарат променливи и как?
Каква по-точно е целта?
Малко off topic но може ли когато публикувате задача това да се отразява и на главната страница като новина.
Може.
Искам да протестирам срещу изискването за намиране на линкове и мейли. Това не е задача за простосмъртни. Или го кажа по друг начин: Този линк http://en.wikipedia.org/wiki/, например, валиден ли е? А този (http://en.wikipedia.org/wiki/)? и разбира се, къде точно започва и свършва линка, при положение, че очевидно има напълно валидни линкове, които завършват на препинателни знаци? И да не забравим моя любимец http://to. (точката е част от линка).
А как ви се вижда това "!@#$%^&*()_+\\\ \ "@[55.55.55.55] щото според мен е валиден мейл...
Просто трябва или много, ама много добре да дефинирате какво е линк и мейл и какво се прави в горепосочените случаи, или направо да я зарежете тая работа.
Не забравяй и IPv6 адресите. Неща от този род са валидни:
http://[1:2:3:4:5]
http://[:::1234:abcd:::]
Задачата може и да не е за простосмъртни, но на простосмъртните им се налага да я решават адски често. И както можеш да се убедиш - простосмъртните правят грешки. В реалния живот е така.
Нашия форум е добър пример за това. Той би трябвало да маркира адресите като такива. Но не всичко, което е валиден адрес е маркирано.
Друг пример е skype. А той даже не е нещо писано в свободното време. Въпреки това ще обърка повечето адреси, които си написал.
От друга страна - същия този skype работи в достатъчно голяма част от случаите и потребителите му не се оплакват.
По подобен начин вашите точки ще бъдат закръглени. С достатъчно малък брой грешки пак ще получите пълен брой точки за домашното.
P.S. Всъщност всичко това не е толкова страшно, защото ние няма да се изхвърляме с тестовете.
Предполагам, че няма да е проблем да ползваме като идея нещо таковак за URL-ите:
http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax
Надявам се да е полезно :)
Относно заглавието какво ще кажем за вход от рода на:
==Баба ==, == Баба== или ==Баба==(тоя последният пример не е много за тука но все пак за пълнота :) )
хммм сетих се и за друг пример - === Баба== ===
@Владимир: Що се отнася до първите ти три примера, аз бих ги интерпретирал като h2. Последното бих интерпретирал като "Баба ==" в h3.
Искам да попитам за частта със специалния текст: Името на класа винаги е с малки букви от англискайта азбука. - ще рече ли че ако имаме стринг от вида: Казаха ми, че [weak_1]съм силен[/weak_1] и, че гълъбите не ядат сникърси.
А после не бяха прави.
ще се преобразува в: <p>Казаха ми, че [weak_1]съм силен[/weak_1] и, че гълъбите не ядат сникърси.</p>
<p>А после не бяха прави.</p>
И примерно [Weak] [/Weak] и [wea k] [/wea k] също няма да се преобразуват?
@Атанас няма.
Ставаше дума част от регулярния израз да се променя. Ноо... явно не.
Трябва ли класовете да могат да се влагат?
@Елена да, но винаги ще са правилно структурирани и няма да се разпростират до повече от един параграф
Въпрос за коментарите: това, че се игнорират какво означава: не ги обработваме по никакъв начин или просто ги няма в изхода?
Вчера мисля, че казахте нещо за тях, но аз не чух... съжалявам ако повтарям въпроси.
Има ли начин, когато използваме групи в шаблона да кажем, че няма цял стринг, а не само един символ. И какъв е начина ако има такъв. Благодаря предварително :)
@Йолина
(?!e)
Matches if the expression e does not match at this assertion and does not
advance over it—called negative lookahead
(?<! e)
Matches if the expression e does not match immediately before this
assertion—called negative lookbehind
(?!imsocool) например
И аз имам въпрос за коментарите. Предполагам закоментираните редове се изпускат напълно. А ако имаме текст непосредствено преди и след коментара, текста слива ли се в един параграф или стават два параграфа?
Всъщност горното важи и за списъци. Ако имаш 2 отделни списъка разделени с коментар то премахването му може да доведе до сливането на тези два в един.
@Велина, @Виктор, коментарите не правят нов параграф. Все едно редът с тях го е нямало.
В тестовете ще има ли URL-та започващи с нещо различно от http? Например ftp :)
На лекции казахте(по-точно Ники каза :) ), че може да си добавяме нови редове в текста. Това значи ли, че може да си добавяме където и колкото си поискаме нови редове, без да се променя разбира се логиката на текста?
@Владимир
погледни примерния тест и по-точно:
self.assertEqual(*(re.sub(r'\s+', '', s) for s in (expected, kiss(source))))
тоест можеш кадето и каквото искаш празно място да добавяш
@Иван
Според мен да започва с http://, https://, ftp://, www или ftp е достатъчно, защото в общия случай нещата опират до RFC 3986, а ако искаха това щяха да го упоменат изрично.
Възможно ли е да има < br / > тагове извън параграфи ? Нещо от рода на:
<p> ... </p> < br / > <p> ... </p>
или:
<h1>...</h1> < br / > <ul> <li>...</li> . . . <li>...</li> </ul>
или (в началото на текста):
< br / > <h1>...</h1>
Освен това в условието се казва, че ред, който започва и завършва с еднакъв брой '=', се счита за валидно заглавие. Това означава ли, че ако има табулации например преди първото и/или след последното '=' няма да се счита за валидно заглавие ?
@Мартин
Наистина задачата е недодефинирана за тези 3 случая, но си мисля че имат предвид <br / > да е само вътре в параграфи. Нека който е писал задачата да каже.
Интересно също дали това е коректно, т.е трябва ли да има втория <br / >:
<p>hhhhh<br / >
<s pan class="iamsocool">Примигвам, примигвам!
Ослепявам, ослепявам!</s pan><br / >
xyz</p>
""Освен това в условието се казва, че ред, който започва и завършва с еднакъв брой '=', се счита за валидно заглавие. Това означава ли, че ако има табулации например преди първото и/или след последното '=' няма да се счита за валидно заглавие ?""
Според условието е невалидно.
@Иван, ще започва с http://
@Мартин, за новите редове между параграфите в условието си пише ясно.
@Мартин, в началото няма да има празни редове. А и условието ти подсказва да ги махнеш, защото казва изрично:
Всяка последователност от повече от един нов ред указва нов параграф.
За да имаш празен ред ти трябват два знака за нов ред. А по-долу в условието се казва, че празните параграфи трябва да се пропускат.
@Мартин, ако ред започва с табулация, то той не започва с знак за равно. Ако пък завършва на табулация, то той не завършва с знак за равно.
@Антон, не можем да кажем дали има второто <br />
, ако не
си дал изходния текст.