Как стать автором
Обновить
1.65

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

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

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

Задачи про PEG-парсеры

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 1.4K

Когда-то я хотел сделать контест по парсингу для Codeforces. Придумал задания двух типов:

1. Дается неформальное описание языка, по которому нужно создать грамматику (например, "язык с правильными скобочными последовательностями")

2. Даны примеры строк в языке, по которым нужно восстановить грамматику

У обоих типов заданий есть свои проблемы, так что контест я не сделал.

В итоге я сделал игру программу, в которой можно решать задания второго типа, при этом проверять строки на принадлежность угадываемому языку.

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

Новости

Лучший regexp для Go. Benchmark c другими ЯП. Сравнение библиотек

Уровень сложности Средний
Время на прочтение 9 мин
Количество просмотров 2.6K
Обзор

"Не используйте регулярки - иначе вместо 1 проблемы, у вас их станет 2!" - как то так говорят знатоки... А что остается делать непослушным, желающим эффективный поиск по большому количеству шаблонов?

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

В этой статье мы рассмотрим альтернативы стандартной библиотеке для регулярных выражений в Go, проведем их бенчмарк по скорости и потребляемой памяти. А также с практической точки зрения рассмотрим различия между ними.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 8

Дерево Киви для поиска шаблонов по тексту

Уровень сложности Средний
Время на прочтение 4 мин
Количество просмотров 2.5K
Кейс

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

Читать далее
Всего голосов 2: ↑2 и ↓0 +2
Комментарии 5

Технические лайфхаки для конкурсов

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 1.2K

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

Узнать лайфхаки
Всего голосов 5: ↑4 и ↓1 +3
Комментарии 3

Истории

Регулярные выражения для JS (TS) juniors

Уровень сложности Средний
Время на прочтение 5 мин
Количество просмотров 5.9K
Туториал

Данная статья написана с уклоном на практическое применение регулярных выражений в проектах. Изначально написана для начинающих разработчиков в моей компании. Статья включает в себя примеры использования на JavaScript (TypeScript).

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 1

Если вы отказались от регулярных выражений, то теперь у вас три проблемы

Уровень сложности Средний
Время на прочтение 18 мин
Количество просмотров 20K
Аналитика
Перевод

Известная шутка программистов гласит, что если решение вашей проблемы включает в себя парсинг текста при помощи регулярного выражения, то теперь у вас есть две проблемы. Некоторые программисты, прочитав шутку, решают попробовать иной подход. Возможно, регулярные выражения не так уж нужны. Возможно, задачу можно решить простым split строки или чем-то подобным. Однако другие могут задуматься немного глубже и задаться вопросом: «А если я сделаю нечто настолько дерзкое, что в результате получу три проблемы?» Мой пост написан в таком духе!

В нём используется код на Python, однако его легко можно адаптировать под любой язык с поддержкой функций высшего порядка.
Читать дальше →
Всего голосов 69: ↑67 и ↓2 +65
Комментарии 70

К 8 марта — 8 женских докладов c наших конференций

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 1.9K
Обзор

Женщины играли заметную роль в программировании, начиная с Ады Лавлейс. Поэтому сегодня (как и всегда) в нашем блоге — никаких слов про «украшения офиса», а только программирование, только хардкор. 

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

Ада Лавлейс одобряет!
Всего голосов 12: ↑8 и ↓4 +4
Комментарии 1

REcollapse: фаззинг с использованием unicode-нормализации

Уровень сложности Сложный
Время на прочтение 6 мин
Количество просмотров 3.7K
Туториал
Перевод

В этом посте я расскажу о технике REcollapse. Я изучал её последние пару лет, чтобы обнаружить до странности простые, но эффективные уязвимости в защищённых объектах. Эта техника может быть использована для захвата учётных записей с нулевым взаимодействием, обнаружения новых обходных путей для брандмауэров веб-приложений и многого другого.

Этот пост преимущественно основан на моём выступлении на BSidesLisbon 2022 и посвящён запуску инструмента REcollapse, который теперь доступен на GitHub. Это также то, что мы начали исследовать внутри Ethiack.

Всё начинается с непредвиденного ввода.

🔐
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 0

Хватит использовать [a-zа-яё]: правильная работа с символами и категориями Unicode в регулярных выражениях

Уровень сложности Средний
Время на прочтение 14 мин
Количество просмотров 5.2K
Туториал
Перевод

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

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

🔣
Всего голосов 20: ↑20 и ↓0 +20
Комментарии 8

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

Время на прочтение 5 мин
Количество просмотров 2K
Туториал

Привет, Хабр!

Если ваш проект вырос, в нем  бэкенд с фронтендом, различные точки входа API, интеграции с внешними системами, сложные алгоритмы, проверки введенных данных пользователем на валидность, диаграммы бизнес-процессов имеют тысячи ветвей, то скорее всего регрессионное тестирование занимает кучу времени, и проводить его вручную уже не выгодно. Проще эту работу поручить машине и тестировать продукт автоматически.  Первый вопрос, который возникает — «Как генерировать данные?», а конкретнее, как генерировать то, что может ввести пользователь. Этот вопрос мы и разберем в данной статье.

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

Что такое катастрофический возврат и как регулярное выражение может стать причиной ReDoS-уязвимости?

Время на прочтение 8 мин
Количество просмотров 5K

Регулярные выражения – очень полезный и удобный инструмент для поиска и замены текста. Однако в некоторых случаях они могут привести к зависанию системы или даже стать причиной уязвимости к ReDoS-атакам.

Читать далее
Всего голосов 29: ↑28 и ↓1 +27
Комментарии 16

Декомпозируем регулярные выражения

Время на прочтение 7 мин
Количество просмотров 6.3K
Туториал

Хороший код читается легко, как проза. Многие книги учат нас тому, как важно делить код на небольшие, повторно используемые, легко потребляемые блоки.

Но почему-то, в случае с регэкспами у программистов как будто появляется слепое пятно на чувстве стиля. Вот такая регулярка – совершенно обычное дело:

/^(0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])[- /.]((19|20)\d\d)$/

А чо не так-то?
Всего голосов 28: ↑20 и ↓8 +12
Комментарии 51

Регулярки (regex) — основы для решения кейсов, про которые не пишут в статьях про основы

Время на прочтение 4 мин
Количество просмотров 24K

"Там просто регулярку написать" - говорили они...

Читать далее
Всего голосов 44: ↑39 и ↓5 +34
Комментарии 47

Ближайшие события

Yandex Scale
Дата 25 – 26 сентября
Время 17:00 – 18:00
Место Москва Онлайн
Битва пет-проектов
Дата 25 сентября – 30 ноября
Место Онлайн
Business&IT Day: Retail CPG
Дата 28 сентября
Время 09:50 – 14:00
Место Онлайн
XIX конференция разработчиков свободных программ «Базальт СПО»
Дата 29 сентября – 1 октября
Время 10:00 – 19:00
Место Переславль-Залесский Онлайн
Kokoc Hackathon
Дата 29 сентября – 1 октября
Время 19:00 – 21:00
Место Онлайн
Ruby Russia 2023 Online
Дата 30 сентября
Время 11:00 – 21:00
Место Онлайн
PG Boot Camp Russia 2023
Дата 5 октября
Время 10:00 – 17:00
Место Москва Онлайн
Joker
Дата 9 – 14 октября
Время 16:00 – 19:30
Место Санкт-Петербург Онлайн
Russia Risk Conference 2023 — 19-я конференция по риск-менеджменту
Дата 25 – 26 октября
Время 10:00 – 19:00
Место Москва Онлайн

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

Время на прочтение 15 мин
Количество просмотров 868
Туториал

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

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

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

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

Время на прочтение 5 мин
Количество просмотров 2.1K
Туториал

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

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

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

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

Время на прочтение 10 мин
Количество просмотров 2.4K
Туториал

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

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

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

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

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

Время на прочтение 5 мин
Количество просмотров 11K
Перевод

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

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

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

Время на прочтение 6 мин
Количество просмотров 3.5K

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

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

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

Время на прочтение 2 мин
Количество просмотров 3.8K

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

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

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

Время на прочтение 8 мин
Количество просмотров 2.5K
Туториал

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

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

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