Рубрика «Регулярные выражения» - 10

Опережающие и ретроспективные проверки в регулярных выраженияхНаткнулся на чрезвычайно простую но интересную задачку, потребовавшую немного выйти за рамки рабоче-крестьянского курса регулярных выражений — и надеюсь краткий рассказ о ней будет полезен тем, кто еще не стал регулярным джедаем.

Безусловно, читая документацию регулярных выражений по диагонали вы, как и я — наверняка не раз наталкивались на опережающие и ретроспективные проверки, но без осознания для какой задачи они могут быть нужны — мозг за них в последствии может и не уцепиться.

Задача банальная — заменить переводы строк на <br/>, за исключением случая, если перед этим шел html-тэг (для простоты только символ >). Отходя от темы — такой алгоритм замены нужен чтобы иметь и автоматическое добавление переводов строки внутри блоков текста в стиле хабра, и при этом не ломать обычную HTML верстку.Читать полностью »

Регулярные выражения — спасение от всех бед для одних и ночной кошмар для других разработчиков, а если говорить объективно, то это мощнейший инструмент, требующий, однако, большой осторожности при применении. Регулярные выражения (регексы, регекспы, регулярки) в языке Ruby основаны на синтаксисе Perl 5 и потому в основных чертах знакомы всем, кто использовал Perl, Python или PHP. Но Ruby тем и хорош, что каждый компонент языка реализован со своим собственным подходом, упрощающим использование данного инструмента и увеличивающим его мощность. В предлагаемой мной небольшой статье рассматриваются особенности регулярок в Ruby и их применение в различных операторах.
Читать полностью »

Нужно было мне намедни расширить Tokenizer для одного известного поисковика на джаве. Всяческие стандартные токенайзеры ну никак не хотели делать то, что нужно было, даже с включением разных токен фильтров типа WordDelimiter и ко. Кто в теме, знает какой с этим бывает геморрой, особенно если используем мультиязычные фильтры — токенайзер то один.

Так вот, на java крутить тест-кейсы довольно муторно (длинный код, вечный ескейп, долгий деплой, и т.д. и т.п.), я пытаюсь это делать как можно меньше, поэтому отрабатывал регулярки на тестах в tcl (ну люблю я этот язык).

Так вот накидал такое вот в тикле, даволен как слон все работает как хотел:

% join [regexp -inline -all {[w][w-&]+|[d-][d-*.,/]+} 
    "US-Währung, C&A, VW-Bus. 1.2.3 -23.456,78 12,345.00 12/01/2012"] " | "
US-Währung | C&A | VW-Bus | 1.2.3 | -23.456,78 | 12,345.00 | 12/01/2012

Немного поясню: нужно вырвать слова из текста, при этом соблюсти кое-какую логику на спецсимволах, чтобы ловить минус только как дефис или например точки и запятые в числах, или даты в разных форматах, но при этом более-менее хорошо отделять пунктуацию.

Короче, регулярка в порядке — лезем в джаву. Читать полностью »

Введение

Наверняка любой, даже самый непродвинутый пользователь ПК, умеет осуществлять поиск и замену строк к тексте. В общем случае необходимо указать строку, которую нужно заменить, и строку, на которую будет производится замена. Этого достаточно для достижения самых простых целей. Но иногда хочется большего — не просто заменить, а, например, изменить структуру строк.

Более сложная цель

Рассмотрим задачу, с которой я столкнулся в процессе своей работы. Мне кажется этот пример в достаточной мере раскрывает суть текущей темы.
Читать полностью »

Весьма полезный рецепт, который облегчает общение с коммандной строкой описан здесь, однако попробовать его вживую не удалось, т.к. под мою систему (OpenIndiana) не существует компиляторя языка Go. Так возникла идея переписать указанную программу на более универсальный язык, который точно существует на любой платформе — Perl.

На получившемся примере кода хотел бы продемонстрировать, как при помощи пары строк с использованием регулярных выражений, можно выполнить быстрый и эффективный поиск.
Читать полностью »

Ключевые новшества — возможность обработки неструктурированной информации для BI (iKnow + DeepSee), DeepSee Visual Reporting — WYSIWYG-редактор для DeepSee/Zen отчетов в браузере.
Другие важные улучшения: поддержка Node.js, регулярные выражения в Caché ObjectScript, поддержка .NET eXTreme для максимально быстрого прямого доступа к глобалам, Java eXTreme через TCP, асинхронный rollback для ECP соединений.
Читать полностью »

Эдсгер Вибе Дейкстра оказался известен, в частности, как автор нескольких ёмких и выразительных высказываний, очерчивающих бездну профессиональной деформации программистов, предпочитающих тот или иной неуютный язык программирования. Небезызвестны, в частности, следующие оценки Дейкстры (я процитирую их по Викицитатнику):

  • «Программирование на КОБОЛе калечит мозг, поэтому обучение ему должно трактоваться как преступление». («The use of COBOL cripples the mind; its teaching should, therefore, be regarded as a criminal offense».)
     
  • «Студентов, ранее изучавших Бейсик, практически невозможно обучить хорошему программированию. Как потенциальные программисты они подверглись необратимой умственной деградации». («It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration».)

Дейкстра умер 6 августа 2002 года. Сегодня, спустя десять с небольшим лет после его смерти, мы вправе оглянуться вокруг и спросить себя: а насколько изменились обстоятельства? Иными словами: а сейчас (в наши дни) среди широко употребляемых языков программирования есть ли такие языки, использование которых влечёт для склонных к ним программистов почти неминуемый риск заметной профессиональной деформации?

Как мне кажется, они есть; и это прежде всего те языки, которые подпадают под определение write-only language, то есть поощряют написание такого исходного кода, прочтение и понимание которого слишком трудно, неоправданно трудно (как правило, даже труднее, чем его написание автором кода), хотя в нормальных языках должно быть наоборот.

Наиболее употребительным из таких языков является Perl.

Будьте покойны: я не намерен просто ткнуть пальцем в Perl и объявить, что он плох. Это вышло бы слишком малоубедительно без доказательств и подробностей. И именно поэтому прямо сейчас на примере, взятом из жизни, я покажу вам четыре механизма, при помощи которых Perl воздействует на сознание программиста и поощряет сочинение им такого кода, который оказывается неприглядным write-only.

Читать полностью »

Доброе время суток, читатели.

Данный пост повествует Вам о том, как с помощью PowerShell мы опять смогли немного облегчить нам жизнь и автоматизировать поиск оборудования и портов, на которых сидят компьютеры пользователей. Это необходимо в тот момент, когда надо пробросить vlan`ы (ну или просто для информации).
Сквозь порты на оборудовании к пользовательским машинам"
Читать полностью »

Часто получаешь в руки железку, нужно оценить, как она наконфигурена. При этом, размер running config может быть огромным (скажем, полный дамп конфига контроллера из моей лабы в данном примере 21KB ~=29 страниц). Для первого взгляда хочется увидеть, какие секции конфига присутствуют. В качестве примера взята платформа Motorola Solutions WING5 (WLAN), но, в принципе будет работать на любой железке, где конструкция "| include" поддерживает regexp (Cisco, Motorola WING4, другие IOS-подобные интерфейсы).
Читать полностью »

Привет, %username%!

В процессе администрирования Asterisk PBX рано или поздно возникает необходимость маршрутизации звонков по направлениям и чаще всего это: город, МГ, внутризоновая связь, МГ. С первыми двумя все ясно. А вот последние два… Ну и что здесь сложного скажете Вы? Уже написан вагон и маленькая тележка статей и скриптов по поводу составления регулярных выражений по DEF и ABC кодам, но периодически приходится обновлять все эти регулярки. И тут возникла мысль, а можно ли это автоматизировать. К сожалению чего-то готового, а главное подходящего найти не удалось. Значит будем изобретать свой велосипед.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js