Как часть программы анализа исходных кодов было необходимо вырезать из JavaScript все строковые литералы. Сначала на PHP был реализован state based парсер, но это было медленно и уныло. А сделать быстро получилось с помощью регулярных выражений.
Читать полностью »
Рубрика «Регулярные выражения» - 12
Об удалении квотированных строк из текста JavaScript
2012-05-25 в 14:33, admin, рубрики: php, Регулярные выражения, метки: PHP, регулярные выраженияСоздание регулярных выражений из диапазонов мобильных телефонных номеров
2012-05-25 в 13:56, admin, рубрики: asterisk, def-коды, Регулярные выражения, телефония, метки: asterisk, def-коды, регулярные выражения, телефонияПривет!
Я много работаю с VoIP-сетями. С коммерческим оборудованием, конечно тоже, но и очень много с OpenSource (статья пишется в контексте использования Asterisk PBX).
В телефонии часто возникает простая задача, разделить маршруты на определённые направления. Ну например, направить вызовы на городские номера в сторону оператора 1, МГ — в сторону оператора 2, МН — в сторону оператора 3.
Задача, в общем-то тривиальная, и реализуется на Asterisk легко:
;Местная городская связь: 7 знаков (в разных регионах РФ от 3-х до 7-ми знаков), и номера экстренных служб.
exten => _0X,1,dial(SIP/itsp1/${EXTEN})
exten => _0XX,1,dial(SIP/itsp1/${EXTEN})
exten => _XXXXXXX,1,dial(SIP/itsp1/${EXTEN})
;Междугородняя и мобильная связь: код выхода на МГ связь (в РФ - "8") + 10 знаков.
exten => _8[348]XXXXXXXXX,1,dial(SIP/itsp2/${EXTEN})
exten => _89XXXXXXXXX,1,dial(SIP/itsp2/${EXTEN})
;Международная связь: код выхода на МН связь (в РФ - "810") + номер телефона в международном формате.
exten => _810X.,1,dial(SIP/itsp3/${EXTEN})
Однако иногда возникает необходимость предоставить абоненту доступ только к мобильным телефонам его области, и здесь простым "_89XXXXXXXXX" не отделаешься.
Читать полностью »
Массовая уязвимость в проектах на Ruby
2012-05-19 в 21:19, admin, рубрики: regexp, ruby, информационная безопасность, Регулярные выражения, метки: regexp, ruby, регулярные выражения Российский разработчик Егор Хомяков сообщил об ещё одной массовой уязвимости в проектах на Ruby. Речь идёт об использовании ^ в начале строки и $ в конце строки регулярных выражений вместо A и z.
Дело в том, что ^ и $ в таких случаях воспринимается Ruby как новые строки (n), что открывает двери для инъекций.
Читать полностью »
Имитируем пересечение, исключение и вычитание, с помощью Lookahead условий, в регулярных выражениях в ECMAScript
2012-05-15 в 3:51, admin, рубрики: javascript, Веб-разработка, Регулярные выражения, метки: javascript, регулярные выраженияИмитируем пересечение, исключение и вычитание, с помощью Lookahead условий в регулярных выражениях в ECMAScript
От переводчика
Это перевод небольшой заметки, написанной вчера Lea Verou
В ней предлагается интересная техника для решения повседневных задач. В самой статье нету ничего нового, но это хорошее обобщение полезной информации.
Информация в статье касается ECMAScript, но может использоваться и в других RegExp Движках (хотя и есть вероятность, что там есть более подходящее решение).
Если примеры кажутся вам сложными, рекомендую играть с ними в консоли, по мере прочтения. И Заранее прощу прочтение за пугающее название.
Статья
Если вы какое-то время используете регулярные выражения, то наверняка вы сталкивались с разными вариантами следующих задач:
- Пересечение:«Что-то, что совпадает с шаблоном А и шаблоном Б»
Например: Пароль, минимум 6 символов, в котором хотя бы одна цифра, хотя бы одна буква, и хотя бы один специальный символ - Исключение: «Я хочу что-то, что совпадает с шаблоном А, но не совпадает с шаблоном Б»
Например: Любое целое число, которое не делится на 50 - Отрицание: Все. Что не совпадает с шаблоном А
Например: Строка, которая не содержит в себе слово «Foo»
Императивный RegExp. Нотация
2012-04-29 в 13:15, admin, рубрики: regexp, Поисковые машины и технологии, Регулярные выражения, регулярные выражения для идиотов, метки: regexp, регулярные выражения для идиотовRegular Expressions For All (REFA)
Основная идея
Существует множество систем для поиска подстрок отвечающих определенной маске. К сожалению они теряют свою мощь как только приходится учитывать многие факторы. Конструкции становятся громозкими, непонятными и трудноподдерживающими.
Именно для этого я попытался создать аналог – REFA. Регулярные выражения для всех.
Его идея в следующем. Как только регулярное выражение перестает быть очевидным – разбить его на два. Оптимизатор при возможности все равно сведет его в одно, таким образом в скорости потерь не будет, но зато код станет яснее.
Читать полностью »
Компилируем регулярные выражения или нет?
2012-03-28 в 21:52, admin, рубрики: regex, regexp, regular expressions, Регулярные выражения, метки: regex, regexp, regular expressionsВ книге Дж.Фридла «Регулярные выражения» я наткнулся на то, что автор намекает не использовать компиляцию регулярных выражений для повседневных случаев и использовать только для критических, когда крайне важна скорость выполнения, особенно если выражение работает с большим объемом текста.
Аналогичное мнение наблюдается и в msdn.
Но так ли это?
Читать полностью »
