Как стать автором
Обновить
1.25
Рейтинг

Регулярные выражения *

Формальный язык поиска

Сначала показывать
Порог рейтинга

PowerShell: проверка совмещения имен БЭМ-сущностей на одном HTML-узле

Разработка веб-сайтов *Программирование *PowerShell *Регулярные выражения *
Tutorial

При написании HTML-страницы по методологии БЭМ («Блок, Элемент, Модификатор») БЭМ-сущности привязываются к узлам HTML-дерева. В предыдущих статьях я рассматривал, как можно выполнить в скрипте на языке PowerShell проверку правильности написания названий БЭМ-сущностей по отдельности с помощью регулярных выражений.

В этой статье рассмотрено, какие есть правила для совмещения нескольких имен БЭМ-сущностей на одном узле HTML-дерева и как соблюдение этих правил можно проверить в скрипте на языке PowerShell. Приведены иллюстрации фрагментов результатов работы скрипта в разных случаях, при обнаружении разных ошибок.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Просмотры 409
Комментарии 0

Новости

PowerShell: распознавание БЭМ-сущностей на HTML-странице

Разработка веб-сайтов *Программирование *PowerShell *Регулярные выражения *
Tutorial

Распознавание типов БЭМ-сущностей (блок, элемент, разные виды модификаторов) в скрипте на языке PowerShell с помощью простых регулярных выражений.

Предполагается, что скрипт получает файл с кодом на языке HTML, разбирает его (парсит) и определяет типы БЭМ-сущностей, привязанных к узлам HTML-дерева, после чего выводит информацию об этом в окно терминала (консоли). Приведена иллюстрация того, как может работать подобный скрипт. Такой инструмент можно использовать для изучения методологии БЭМ самому или обучения этой методологии других.

Читать далее
Всего голосов 6: ↑4 и ↓2 +2
Просмотры 1.7K
Комментарии 0

PowerShell: классическая схема именования в БЭМ и регулярные выражения

Веб-дизайн *Разработка веб-сайтов *Программирование *PowerShell *Регулярные выражения *
Tutorial

В методологии БЭМ, которую используют для создания сайтов, существует соглашение (схема) по именованию классов CSS (БЭМ-сущностей), которые привязывают к HTML-элементам HTML-дерева. Я рассматриваю классическую схему именования классов CSS по методологии БЭМ, а также — как создать функцию на языке PowerShell для проверки (валидации) имен БЭМ-сущностей на ошибки.

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

Приведена иллюстрация, как может работать (какой результат может выдавать в консоль) такой скрипт-валидатор.

Читать далее
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 1.8K
Комментарии 2

Как работают регулярные выражения, или Движок regex с анимацией

Блог компании SkillFactory Python *Программирование *Алгоритмы *Регулярные выражения *
Перевод

К старту курса по Fullstack-разработке на Python показываем, как работают регулярные выражения, на примере их движка с визуализацией, которую вы видите на КДПВ. Под катом подробности и код.

Читать далее
Всего голосов 22: ↑21 и ↓1 +20
Просмотры 7.9K
Комментарии 17

Re2j вместо стандартного regEx в Java: в каких случаях и как использовать

Блог компании Just AI Программирование *Java *Регулярные выражения *Kotlin *

Всем привет! Я Даниил, java разработчик в Just AI, и в этой статье я расскажу, как мы столкнулись с проблемой backtracking’а в регулярных выражениях и как ее решили с помощью библиотеки re2j.

Читать далее
Всего голосов 13: ↑12 и ↓1 +11
Просмотры 2.9K
Комментарии 12

Полетели типографировать

Типографика *JavaScript *Регулярные выражения *

Время идет, технологии меняются, а необходимость приводить тексты в порядок остается. Так и в случае с Типографом, казалось бы, что еще можно придумать?

Читать далее
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3.2K
Комментарии 13

Обработка текста с помощью textutils с примерами

Perl *Ненормальное программирование *Занимательные задачки Регулярные выражения *
Tutorial

Набор утилит для потоковой обработки текста появился уже в первых версиях Unix и доступен практически везде. Это такие команды как cat/tac, head/tail, cut, grep, sed, sort, uniq, wc, nl, fmt. Каждая из этих утилит выполняет свою простую обработку текста, но комбинируя их в конвейере, т.е. передавая стандартный вывод одной команды на вход следующей, можно обрабатывать тексты произвольного размера или быстро решить некоторые задачи.

Для этого нужно усвоить несколько приемов
Всего голосов 5: ↑3 и ↓2 +1
Просмотры 1.9K
Комментарии 2

Regex for lazy developers

PHP *Python *JavaScript *.NET *Регулярные выражения *
Tutorial

Регулярные выражения для ленивых людей?!

Regex – это модуль вашего языка программирования который позволяет работать со сложными и большими строками просто! Давайте разбираться в них вместе. Приятного прочтения ;)

Читать далее
Всего голосов 24: ↑17 и ↓7 +10
Просмотры 16K
Комментарии 32

Реализация простого механизма регулярных выражений в 70 строк кода

PHP *Программирование *Регулярные выражения *

Эта короткая статья обязана одному интересному тестовому заданию, в котором требовалось реализовать базовый функционал утилиты grep на языке PHP, не используя никаких встроенных функций по работе с регулярными выражениями.

Строка с шаблоном должна была включать поддержку следующих метасимволов:

^ - начало строки

$ - конец строки

. - любой символ

* - 0 или более раз

? - 0 или 1 раз

+ - 1 или более раз

Так же нужно было поддерживать экранирование метасимволов при помощи '\', чтобы по ним возможно было производить поиск. В результате, получившаяся утилита занимает порядка ста строк кода, из которых 70 - это функции регулярных выражений. 

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Просмотры 5K
Комментарии 14

Одним db.odbc.get запросом в базу реализовывается discovery метрик и разнесение данных по метрикам

Системное администрирование *Oracle *PostgreSQL *IT-инфраструктура *Регулярные выражения *

Получение несколько десятков параметров запросом в базы oracle, автоматическая разведка (discovery) метрик и наполнение их данными, и все за один запрос к базе

Читать далее
Рейтинг 0
Просмотры 1.2K
Комментарии 0

Обезболиваем RegEx

Блог компании TINKOFF Разработка веб-сайтов *JavaScript *Регулярные выражения *Лайфхаки для гиков

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

Можно ли вообще не использовать регулярные выражения? А в каких случаях нельзя? Что делать, если использовать все-таки приходится? Предлагаю разобраться с этим. Определим ситуации, когда регулярные выражения можно не использовать, когда нужно использовать и как сделать так, чтобы не было мучительно больно к ним возвращаться.

Читать далее
Всего голосов 22: ↑17 и ↓5 +12
Просмотры 8.1K
Комментарии 32

Регулярные выражения. Всё проще, чем кажется

Регулярные выражения *
Из песочницы

Всем доброго времени суток. Сегодня хочу рассказать максимум о регулярных выражениях: что они из себя представляют, как их писать, для чего нужны и т.д.

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

Читать далее
Всего голосов 49: ↑45 и ↓4 +41
Просмотры 56K
Комментарии 71

Да хватит уже писать эти регулярки

Ненормальное программирование *JavaScript *Совершенный код *Регулярные выражения *TypeScript *

Здравствуйте, меня зовут Дмитрий Карловский и раньше я тоже использовал Perl для разработки фронтенда. Только гляньте, каким лаконичным кодом можно распарсить, например, имейл:


/^(?:((?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}(?:\.(?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}){0,})|("(?:((?:(?:([\u{1}-\u{8}\u{b}\u{c}\u{e}-\u{1f}\u{21}\u{23}-\u{5b}\u{5d}-\u{7f}])|(\\[\u{1}-\u{9}\u{b}\u{c}\u{e}-\u{7f}]))){0,}))"))@(?:((?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}(?:\.(?:[\w!#\$%&'\*\+\/=\?\^`\{\|\}~-]){1,}){0,}))$/gsu

Тут, правда, закралось несколько ошибок. Ну ничего, пофиксим в следующем релизе!

Шутки в сторону
Всего голосов 42: ↑31 и ↓11 +20
Просмотры 15K
Комментарии 32

Как в PHP улучшить читаемость регулярных выражений

Блог компании VK PHP *Алгоритмы *Регулярные выражения *
Перевод
Tutorial

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

PHP использует диалект регулярных выражений PCRE — до версии PHP 7.3, и PCRE2 — в более новых версиях. Поэтому в PHP можно использовать различные продвинутые приемы, помогающие писать читаемые, самодокументируемые и поддерживаемые регулярные выражения. При этом не надо также забывать и о наличии в PHP функций фильтрации переменных, а также семейства функций ctype*, позволяющих валидировать такие распространенные значения как url-ссылки, адреса электронной почты и строки из букв и цифр — вообще без использований регулярный выражений. Во многих IDE есть подсветка регулярных выражений, помогающая их читать, а иногда даже и проверка выражений, с подсказками по их улучшению.

Читать далее
Всего голосов 39: ↑37 и ↓2 +35
Просмотры 6.5K
Комментарии 14

Продолжаем интернационализацию поиска по адресам с помощью Sphinx или Manticore. Теперь Metaphone

Поисковые технологии *Open source *Sphinx *Алгоритмы *Регулярные выражения *

Это продолжение публикации «Интернационализация поиска по городским адресам. Реализуем русскоязычный Soundex на Sphinx Search», в которой я разбирал, как реализовать поддержку фонетических алгоритмов Soundex в Sphinx Search, для текста написанного кириллицей. Для текста на латинице поддержка Soundex уже есть. С Metphone аналогично, для латиницы есть, для кириллицы не очень, но попытаемся исправить этот досадный факт с помощью транслитерации, регулярных выражений и напильника.

Это прямое продолжение, в котором разберём как реализовать оригинальный Metaphone, русский Metaphone (в том смысле что транслитерация не понадобится), Caverphone, и не сможем сделать Double Metaphone.

Реализация подойдёт как для использования на платформе Sphinx Search, так и Manticore Search.

В конце, посмотрим как Metaphone воспримет "ракомакофон".

Продолжаем...
Всего голосов 1: ↑1 и ↓0 +1
Просмотры 2.1K
Комментарии 2

Интернационализация поиска по городским адресам. Реализуем русскоязычный Soundex на Sphinx Search

Поисковые технологии *Open source *Sphinx *Алгоритмы *Регулярные выражения *

Как много в вашем городе иностранных туристов? В моём мало, но встречаются, как правило стоят потерянные посреди улицы и повторяют одно единственное слово – название чего бы то ни было. А прохожие пытаются им на пальцах объяснить куда пройти, а когда «моя твоя не понимать» – берут за руку и ведут к пункту назначения. Как это не удивительно, обычно цель в пяти минутах ходьбы, т.е. какое-то примерное представление о городе эти туристы всё же имели. Может по бумажной карте ориентировались.

А как часто лично вы оказывались в такой ситуации, в незнакомом городе в другой стране?

Появление смартфонов и приложений для навигации решило много проблем. Ура, можно посмотреть свою геолокацию, можно найти куда идти, прикинуть в каком направлении и даже проложить маршрут.

Осталась одна проблема: все улицы в приложении подписаны местными иероглифами на местном наречии, и ладно если в стране пребывания принята латиница, клавиатура на латинице есть во всех смартфонах и мир к ней привык, и то я испытывал дискомфорт, из-за диакритических знаков, принятых в чешском алфавите. А боль и страдания иностранцев, видящих кириллицу, могу только представить, посмотрите псевдокириллицу и поймёте. Если бы я оказался на их месте, я бы писал названия и адреса латиницей, пытаясь воспроизвести звучание - фонетический поиск.

В публикации опишу как реализовать фонетические алгоритмы поиска Soudex на движке Sphinx Search. Одной транслитерацией здесь не обойдётся, хотя и без неё никуда. Получившийся конфигурационный файл, доступен на GitHub Gist.

Длиннопост
Всего голосов 8: ↑8 и ↓0 +8
Просмотры 1.8K
Комментарии 6

Регулярные выражения (regexp) — основы

Тестирование IT-систем *Регулярные выражения *

Регулярные выражения (их еще называют regexp, или regex) — это механизм для поиска и замены текста. В строке, файле, нескольких файлах... Их используют разработчики в коде приложения, тестировщики в автотестах, да просто при работе в командной строке!

Чем это лучше простого поиска? Тем, что позволяет задать шаблон.

Например, на вход приходит дата рождения в формате ДД.ММ.ГГГГГ. Вам надо передать ее дальше, но уже в формате ГГГГ-ММ-ДД. Как это сделать с помощью простого поиска? Вы же не знаете заранее, какая именно дата будет.

Читать далее
Всего голосов 59: ↑51 и ↓8 +43
Просмотры 319K
Комментарии 69

Еще раз о регекспах, бэктрекинге и том, как можно положить на лопатки JVM двумя строками «безобидного» кода

Блог компании VK Java *Регулярные выражения *
Из песочницы

Раннее утро, десятая чашка кофе, безуспешные попытки понять почему ваше клиентское (или еще хуже – серверное) java-приложение намертво зависло при вычислении простого регекспа на небольшой строке… Если подобная ситуация уже возникала в вашей жизни, вы уже наверняка знаете про бэктрекинг и темную сторону регулярных выражений. Остальным – добро пожаловать под кат!

Читать далее
Всего голосов 38: ↑36 и ↓2 +34
Просмотры 11K
Комментарии 8

Как перестать бояться и полюбить регулярные выражения

Блог компании Миландр Регулярные выражения *

В работе и повседневной жизни мы буквально окружены текстами: книги и статьи, письма и чаты, веб-страницы и программный код. Да что там — сама биологическая жизнь основана на ДНК. И для эффективной работы по поиску или модификации текста уже давно был придуман мощный инструмент — регулярные выражения, или regex. Однако по ряду причин далеко не все их используют, или имеют дело с ними только когда заставили при крайней необходимости. В этой статье я попытаюсь исправить эту печальную ситуацию.



Чтобы функции отыскать, воедино созвать и единою чёрною волей сковать.
Читать дальше →
Всего голосов 34: ↑31 и ↓3 +28
Просмотры 18K
Комментарии 27

Классифицируем ошибки из PostgreSQL-логов

Блог компании Тензор PostgreSQL *SQL *Регулярные выражения *Администрирование баз данных *
Посвящается всем любителям анализировать логи.

В логах работающих систем рано или поздно появляются тексты каких-то ошибок. Чем таких систем больше в обозримом пространстве, тем больше вероятность ошибку увидеть. Серверы PostgreSQL, которые находятся под нашим мониторингом ежедневно генерируют от 300K до, в неудачный день, 12M записей об ошибках.

И такие ошибки — это не какой-то там «о, ужас!», а вполне нормальное поведение сложных алгоритмов с высокой степенью конкурентности вроде тех, о которых я рассказывал в статье про расчет себестоимости в СБИС — все эти deadlock, could not obtain lock on row in relation …, canceling statement due to lock timeout как следствие выставленных разработчиком statement/lock timeout.

Но есть ведь и другие виды ошибок — например, you don't own a lock of type ..., которая возникает при неправильном использовании рекомендательных блокировок и может очень быстро «закопать» ваш сервер, или, мало ли, кто-то периодически пытается «подобрать ключик» к нему, вызывая возникновение password authentication failed for user …

[источник КДПВ]

Собственно, это все нас подводит к мысли, что если мы не хотим потом хвататься за голову, то возникающие в логах PostgreSQL ошибки недостаточно просто «считать поштучно» — их надо аккуратно классифицировать. Но для этого нам придется решить нетривиальную задачу индексированного поиска регулярного выражения, наиболее подходящего для строки.
Читать дальше →
Всего голосов 9: ↑9 и ↓0 +9
Просмотры 3K
Комментарии 6

Вклад авторов