lurkmore.live
Open in
urlscan Pro
2a01:4f9:3051:5441::2
Public Scan
Submitted URL: http://lurkmore.live/regexp
Effective URL: https://lurkmore.live/Regexp
Submission: On August 25 via api from US — Scanned from FI
Effective URL: https://lurkmore.live/Regexp
Submission: On August 25 via api from US — Scanned from FI
Form analysis
3 forms found in the DOMName: ChangeOrder —
<form name="ChangeOrder" action="">
<select name="TheOrder">
<option value="0">Упорядочить по дате</option>
<option value="1">Упорядочить по числу баллов</option>
</select>
</form>
Name: commentForm — POST
<form action="" method="post" name="commentForm">
<div class="c-form-title">Добавить свой комментарий</div>
<div id="replyto" class="c-form-reply-to"></div>
<div class="c-form-message">На сайте Lurkmore приветствуются <b>все комментарии</b>. Если вы не хотите быть анонимным,
<a href="/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%A1%D0%BE%D0%B7%D0%B4%D0%B0%D1%82%D1%8C_%D1%83%D1%87%D1%91%D1%82%D0%BD%D1%83%D1%8E_%D0%B7%D0%B0%D0%BF%D0%B8%D1%81%D1%8C" title="Служебная:Создать учётную запись">зарегистрируйтесь</a>
или <a href="/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D1%85%D0%BE%D0%B4" title="Служебная:Вход">представьтесь</a>. Это бесплатно.</div>
<textarea name="commentText" id="comment" rows="5" cols="64" maxlength="1500"></textarea>
<div class="comment-preview"></div>
<div class="h-captcha" data-sitekey="63c0c11a-dcd9-45df-a7be-7683faf0223e"><iframe
src="https://newassets.hcaptcha.com/captcha/v1/503a6fc/static/hcaptcha.html#frame=checkbox&id=0gqx4mrpkyug&host=lurkmore.live&sentry=true&reportapi=https%3A%2F%2Faccounts.hcaptcha.com&recaptchacompat=true&custom=false&hl=fi&tplinks=on&pstissuer=https%3A%2F%2Fpst-issuer.hcaptcha.com&sitekey=63c0c11a-dcd9-45df-a7be-7683faf0223e&theme=light&origin=https%3A%2F%2Flurkmore.live"
tabindex="0" frameborder="0" scrolling="no" allow="private-state-token-issuance 'src'; private-state-token-redemption 'src'" title="Widget, joka sisältää valintaruudun hCaptcha-tietoturvahaasteelle" data-hcaptcha-widget-id="0gqx4mrpkyug"
data-hcaptcha-response="" style="pointer-events: auto; width: 303px; height: 78px; overflow: hidden;"></iframe><textarea id="g-recaptcha-response-0gqx4mrpkyug" name="g-recaptcha-response" style="display: none;"></textarea><textarea
id="h-captcha-response-0gqx4mrpkyug" name="h-captcha-response" style="display: none;"></textarea></div>
<div class="c-form-button"><input type="button" value="Оставить комментарий" class="site-button" name="wpSubmitComment">
<input type="button" value="Предварительный просмотр" class="site-button" name="wpPreview">
</div>
<input type="hidden" name="action" value="purge">
<input type="hidden" name="pageId" value="4097">
<input type="hidden" name="commentid">
<input type="hidden" name="lastCommentId" value="0">
<input type="hidden" name="commentParentId">
<input type="hidden" name="cpage" value="1">
<input type="hidden" value="+\" name="token">
</form>
/index.php
<form action="/index.php" id="searchform" class="vector-search-box-form">
<div id="simpleSearch" class="vector-search-box-inner" data-search-loc="header-navigation">
<input class="vector-search-box-input" type="search" name="search" placeholder="Искать в Lurkmore" aria-label="Искать в Lurkmore" autocapitalize="sentences" title="Искать в Lurkmore [alt-shift-f]" accesskey="f" id="searchInput">
<input type="hidden" name="title" value="Служебная:Поиск">
<input id="mw-searchButton" class="searchButton mw-fallbackSearchButton" type="submit" name="fulltext" title="Найти страницы, содержащие указанный текст" value="Найти">
<input id="searchButton" class="searchButton" type="submit" name="go" title="Перейти к странице, имеющей в точности такое название" value="Перейти">
</div>
</form>
Text Content
Однако, здравствуйте. То, что вы видите перед собой — это памятник Луркоморью, каким его застала судьба на момент 15 апреля 2021 года. Все статьи на проекте оставлены в исторических целях в том виде, в котором сохранились. Редактировать их нельзя. Если вы хотите помочь с причесыванием технических моментов (правкой верстки, восстановлением битых видео и общим улучшайзингом) — можете запросить инвайт ↗. Если же вам нестерпимо хочется переписать какую-либо статью — сделайте это на Урбанкультуре, переработав текст в стилистике и по гайдлайнам UC. Если в этой версии бэкапа нет каких-то статей, но вы знаете, где можно их достать и восстановить — пишите сюда. Чтобы не потерять луркоархив из виду из-за частой смены доменных имен (РКН, спишь?), пользуйтесь сервисом «Is Lurk Online?» Война в Украине Все мы знаем, какой пиздец сейчас творит с Украиной путинSSкий режим и одна известная вам страна-победительница-фашизма до кучи. Если вы хотите почитать об этом, помочь актуализировать информацию или высказать свое мнение — можете сделать это в статье Война в Украине на Урбанкультуре и там же в обсуждении. * Флудильнясрать в каментах здесь * TORна случай тотального бана * Донат и рекламана демонстрацию жопы роскомнадзору * Уютный чятик в Дискордедля желающих попиздеть за жизнь * Канал в Телеграменесвежие мемы скачать бесплатно без СМС * admin@urbanculture.inединое окно для связи с общественностью REGEXP Материал из Lurkmore (перенаправлено с «Regexp») Перейти к навигации Перейти к поиску В эту статью нужно добавить как можно больше жадных квантификаторов. Также сюда можно добавить интересные факты, картинки и прочие кошерные вещи. Я нихуя не понял! В этой статье слишком много мусора, что затрудняет её понимание. Данный текст необходимо очистить, либо вообще снести нахуй Я не являюсь сторонником такого кода, в котором нарисован единственный регэксп в пару-тройку-другую сотен символов длиною, который не в подъем уму уразуметь… Мицгол Я знаю регулярные выражения! Регэксп (moon. 正規表現, евр. рас. : ביטוי רגולרי, он же RegExp, RegEx и ещё Регулярка, а обозначает оно Regular Expression(s)) — фича в языках программирования, позволяющая сократить 9000 строк кода до одной строчки непонятной хуйни. Сей термин восходит корнями к дискретной математике и означает он систему лексического анализа текста для выделения из него составных частей. Чуть менее, чем полностью состоит из символов .%?* и других. СОДЕРЖАНИЕ * 1 Суть * 2 Применение регэкспов * 3 Пример * 4 Если бы не было программистов * 5 См. также * 6 Ссылки * 7 Примечания СУТЬ Главное в регэкспе — это специальные, или служебные символы. Например, известные обычным юзерам wildcards вроде «*.txt» (найти все все файлы с расширением txt) на регэкспе выглядит примерно как «.*\.txt». На неокрепший разум познание регекспов действует разрушительно — появляется непреодолимое желание совать регекспы везде, даже когда можно обойтись более простыми и читаемыми средствами. Модули, обеспечивающие поддержку функций работы с регулярками, можно найти для любого высокоуровневого неэзотерического языка, поэтому — краткий список языков, в которых НЕЛЬЗЯ использовать регекспы: Brainfuck, ассемблер и 1C. ПРИМЕНЕНИЕ РЕГЭКСПОВ If you parse HTML with regex you are giving in to Them and their blasphemous ways which doom us all to inhuman toil for the One whose Name cannot be expressed in the Basic Multilingual Plane, he comes. stackoverflow Стандартом де-факто для регулярных выражений является PCRE — Perl Compatible Regular Expression. Регулярки данного стандарта понимают фактически все современные языки программирования. Существуют также и другие стандарты, например винрарный POSIX, однако широкого распространения они не получили и используются преимущеcтвенно PHP-быдлокодерами[1] или трухардкор-красноглазиками Пример, который соответствует большинству корректных адресов E-mail, например FuckMyBrain@pechenki.com: ^[-.\w]+@(?:[a-z\d]{2,}\.)+[a-z]{2,6}$ Того же результата и даже более омниприменимого результата можно добиться и другими, более сложными регэкспами. Самый полный известный регексп, проверяющий корректность e-mail в соответствии с грамматикой RFC822, занимает более страницы машинописного текста. И таки он тоже неидеален. Приятная особенность всех регулярок заключается в том, что ни один даже самый профессиональный девелопер не может за сколь либо приемлемый срок сказать, чему соответствует та или иная регулярка, глядя на неё. Более того, даже если её придумал сам программист, то если он не прокомментировал её, уже через месяц или неделю она будет для него столь же загадочна и непонятна, как и любая другая. У всех остальных же вообще при виде подобного непотребства случается коллапс ганглия. Впрочем, существуют более удобные способы записи регулярных выражений, позволяющие подробно их комментировать. > Some people, when confronted with a problem, think "I know, I’ll use regular > expressions." Now they have two problems. — Jamie Zawinski in comp.lang.emacs Регулярки как правило применяются тремя способами: * Сопоставление (match) — смысл действия в том чтобы выяснить, соответствует ли определенный текст заданному регулярному выражению. Например текст «Пыщь!!!!!11» не соответствует вышеприведенному регэкспу. * Поиск (find) — позволяет выдрать из текста все последовательности символов, соответствующие регулярке. Например при выполнении данной операции с вышеприведенной регуляркой к любой веб-странице на выходе прогер получит хуй, ибо сий регэксп начинается с ^ и кончается $, что означает что выражение соответствует не просто последовательности символов, а целой строке, или даже всему тексту. Если же убрать данные символы из концов выражения, то счастливый юзер получит все e-mail адреса, указанные на странице, что позволит ему люто, бешено рассылать спам. * Замена (replace) — позволяет не просто найти, но и уничтожить заменить определенные последовательности символов в строке, что позволяет например легко менять корни слов в тексте, делать всякие там фильтры мата или вчерную пиздить целые сайты, меняя на них ссылки на ходу. Распространенной практикой является использование в письменной речи (а не только в исходниках программ) оператора замены s/// из sed (также есть в perl и VIM). Например, допустив опечатку, можно написать следующим сообщением, скажем, s/монад/номад/g, означает «надо бы заменить „монад“ на „номад“». Еще так можно скорректировать предыдущего оратора в треде или подсказать ему другое направление мысли. В конечном счете бытовой программист с помощью регэкспов может делать, например, такие вещи: * Проверять правильность ввода пользователем данных в различных интерфейсах. * Изменять поведение скриптов с юзерской стороны в зависимости от того, где находится (каков полный адрес страницы) юзер, что удобно на сайтах с изменяющимся контентом. * Автоматически обрабатывать выдачу различных поисковиков и сервисов типа Vkontakte, дабы собрать базу емылов/асечек и онанировать на нее. * Обрабатывать выдачу яндекса, чтобы пиздить контент и заполнять интернеты богомерзкими говносайтами, чуть более чем полностью состоящими из рекламы и приносящими своему создателю 2-3 доллара в день. * Обрабатывать спизженное, чтобы получить псевдоуникальный контент и тем самым чуть-чуть поднять свой бредосайт над своими менее удачливыми собратьями, обогатившись на цент-два в день. * Парсить странички с проном, выкачивая его тоннами * Быстренько пофиксить баг на сайте, заюзав ob_start/ob_get_contents + сабж, чем доставив лютую анальную боль будущему баг-фиксеру * Грабить корованы * ?????? * PROFIT Следует, однако, понимать, что использование регулярных выражений для парсинга HTML знаменует пришествие Zalgo. Пруфлинк: http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags ПРИМЕР Чтобы во всей полноте ощутить регулярность регулярных выражений, приведём пример несложного выражения в perl flavor, которое проверяет почтовый адрес на соответствие RFC 822 (на самом деле, этот стандарт несколько устарел и в данный момент актуальнее RFC 2822 RFC 5322, но он не столь нагляден). [показать] (?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*:(?:(?:\r\n)?[ \t])*(?:(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*)(?:,\s*(?:(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*|(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)*\<(?:(?:\r\n)?[ \t])*(?:@(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*(?:,@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*)*:(?:(?:\r\n)?[ \t])*)?(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|"(?:[^\"\r\\]|\\.|(?:(?:\r\n)?[ \t]))*"(?:(?:\r\n)?[ \t])*))*@(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*)(?:\.(?:(?:\r\n)?[ \t])*(?:[^()<>@,;:\\".\[\] \000-\031]+(?:(?:(?:\r\n)?[ \t])+|\Z|(?=[\["()<>@,;:\\".\[\]]))|\[(?:[^\[\]\r\\]|\\.)*\](?:(?:\r\n)?[ \t])*))*\>(?:(?:\r\n)?[ \t])*))*)?;\s*) Для справки также приводится функция, с помощью которой данное регулярное выражение конструируется (написана она, собственно, аккурат по RFC): sub make_rfc822re { # Basic lexical tokens are specials, domain_literal, quoted_string, atom, and # comment. We must allow for lwsp (or comments) after each of these. # This regexp will only work on addresses which have had comments stripped # and replaced with lwsp. my $specials = '()<>@,;:\\\\".\\[\\]'; my $controls = '\\000-\\031'; my $dtext = "[^\\[\\]\\r\\\\]"; my $domain_literal = "\\[(?:$dtext|\\\\.)*\\]$lwsp*"; my $quoted_string = "\"(?:[^\\\"\\r\\\\]|\\\\.|$lwsp)*\"$lwsp*"; # Use zero-width assertion to spot the limit of an atom. A simple # $lwsp* causes the regexp engine to hang occasionally. my $atom = "[^$specials $controls]+(?:$lwsp+|\\Z|(?=[\\[\"$specials]))"; my $word = "(?:$atom|$quoted_string)"; my $localpart = "$word(?:\\.$lwsp*$word)*"; my $sub_domain = "(?:$atom|$domain_literal)"; my $domain = "$sub_domain(?:\\.$lwsp*$sub_domain)*"; my $addr_spec = "$localpart\@$lwsp*$domain"; my $phrase = "$word*"; my $route = "(?:\@$domain(?:,\@$lwsp*$domain)*:$lwsp*)"; my $route_addr = "\\<$lwsp*$route?$addr_spec\\>$lwsp*"; my $mailbox = "(?:$addr_spec|$phrase$route_addr)"; my $group = "$phrase:$lwsp*(?:$mailbox(?:,\\s*$mailbox)*)?;\\s*"; my $address = "(?:$mailbox|$group)"; return "$lwsp*$address"; } ЕСЛИ БЫ НЕ БЫЛО ПРОГРАММИСТОВ Следует заметить, что регулярные выражения существуют не только в ОйТи, но и в сугубо матанских областях знаний, например, в той же дискретной математике. Но там владение регэкспами приносит значительно меньше профита, и посему рассматриваться нами в рамках данной статьи не будет. Кому интересно — читайте педивикию по сабжу. СМ. ТАКЖЕ * Неведомая ёбаная хуйня * Когнитивный диссонанс * Я нихуя не понял * ЩИТО ССЫЛКИ * Визуальный редактор регекспов, для желающих приобщиться, но ленящихся лезть в дебри языков программирования * Преобразователь регекспов в няшную инфографику, понятную даже дураку неспециалисту * Краткий список спецсимволов от создателей огнелиса * Список модификаторов регекспов * Как сломать интернет одним регулярным выражением На регэкспах(!) можно делать игры: * Умные девушки/55238 пишут тетрис на sed. * Умные парни пишут на sed шахматы (пруфец, исходники). ПРИМЕЧАНИЯ 1. ↑ В виду того, что они не знают, что в PHP 5.3.0 признаны устаревшими (вызов кидает DEPRECATED) и окончательно исчезнут в PHP6 Языки программирования * ++i + ++i * 1С * AJAX * BrainFuck * C Sharp * C++ * Dummy mode * Erlang * Forth * FUBAR * God is real, unless explicitly declared as integer * GOTO * Haskell * Ifconfig * Java * JavaScript * LISP * My other car * Oracle * Pascal * Perl * PHP * Prolog * Pure C * Python * RegExp * Reverse Engineering * Ruby * SAP * SICP * Tcl * TeX * Xyzzy * Анти-паттерн * Ассемблер * Быдлокодер * Выстрелить себе в ногу * Грязный хак * Дискета * ЕГГОГ * Индусский код * Инжалид дежице * Капча * КОИ-8 * Костыль * Лог * Метод научного тыка * Очередь * Помолясь * Проблема 2000 * Программист * Процент эс * Рекурсия * Свистелки и перделки * Спортивное программирование * СУБД * Тестировщик * Умение разбираться в чужом коде * Фаза Луны * Фортран * Хакер * Языки программирования w:Regexp en.w:Regexp Упорядочить по дате Упорядочить по числу баллов Включить автоматическое обновление комментариев Добавить свой комментарий На сайте Lurkmore приветствуются все комментарии. Если вы не хотите быть анонимным, зарегистрируйтесь или представьтесь. Это бесплатно. Источник — https://lurkmore.live/index.php?title=RegExp&oldid=4100 Категории: * Страницы, использующие устаревший тег source * Страницы с ошибками в подсветке синтаксиса * Страницы, использующие DynamicPageList * Lurkmore:Gimme moar * Lurkmore:Статьи к очистке * Языки программирования НАВИГАЦИЯ ПЕРСОНАЛЬНЫЕ ИНСТРУМЕНТЫ * Войти * Запрос учётной записи * Тёмная тема ПРОСТРАНСТВА ИМЁН * Статья * Обсуждение русский ПРОСМОТРЫ * Читать * Просмотр кода * История * PDF Ещё ПОИСК НАВИГАЦИЯ * Главная страница * Новые статьи * Случайная статья * Свежие правки УЧАСТНИКАМ * Чятик * Канал в Телеграме * Группа в Дискорде * Вниманию участников (rip) ИНСТРУМЕНТЫ * Ссылки сюда * Связанные правки * Загрузить файл * Служебные страницы * Версия для печати * Постоянная ссылка * Сведения о странице * Получить сокращённый URL-адрес * Эта страница в последний раз была отредактирована 3 сентября 2020 в 07:22. * Содержание доступно по лицензии WTFPL public license (если не указано иное). * Политика конфиденциальности * О Lurkmore * Отказ от ответственности * Изменить настройки предварительного просмотра * *