Давным-давно, когда небо было голубым, трава зеленее и по Земле бродили динозавры… Нет, забудьте про динозавров. Ну, в общем, когда-то тогда пришла в голову мысль отвлечься от стандартного web-программирования и заняться чем-то более безумным. Можно было, конечно, чем угодно, но выбор пал на написание своего интерпретатора. Что я могу сказать… Никогда не пишите свои языки программирования. Но некоторый опыт из всего этого я извлёк, так что вот и решил поделиться. Начнём с самой основы — лексера.
Читать полностью »
Рубрика «regex» - 2
Немного о лексическом анализе
2019-01-03 в 22:38, admin, рубрики: lexer, php, regex, Компиляторы, никто не читает тегиSQL Server поддерживает регулярные выражения при проверке ограничений, не всегда нужны триггеры
2017-10-24 в 11:29, admin, рубрики: constraints, Microsoft SQL Server, regex, regexp, sql, sql server, ограничение, ограничения, Регулярные выраженияКто-то задал такой вопрос:
Мне нужно создать таблицу group со столбцом code. Можно ли добавить ограничение на столбец, которое допускало бы только буквенные символы (D, M, O, P или T) с последующими двумя цифровыми символами?
Ему ответили:
Вы не можете этого сделать обычным способом — MS SQL Server поддерживает проверку ограничений, но лишь в виде мин/макс значения INT, длины строки и т.п. То, что вам нужно, — проверка на основе регулярного выражения, которую SQL Server не поддерживает. Теоретически можно сделать .NET вставку, развернуть на SQL Server и заставить его использовать такую проверку — нетривиальная задача.
Попробуем разобраться
Не смотря на то, что SQL server не поддерживает регулярные выражения в полной мере, но поставленную выше задачу можно без проблем решить и на T-SQL. Вот так будет выглядеть это регулярное выражение
[DMOPT][0-9][0-9]
Оно допускает только буквенные символы (D, M, O, P или T) с последующими двумя цифровыми символами. Ладно, хватит разговоров, давайте перейдем к коду
Читать полностью »
На 100% правильный способ проверки адресов электронной почты
2017-01-26 в 21:17, admin, рубрики: email, regex, валидация, проверка адреса, Программирование, Регулярные выражения, юморПоздравляю. C сегодняшнего дня вы никогда не будете тратить время, подбирая самое оптимальное регулярное выражение для проверки адреса электронной почты. И вы никогда больше не отклоните адрес, который к вашему удивлению оказался действительным.
Хитрость в том, чтобы сразу определить значение слова «действительный».
Мы разработчики — технические ребята, так что наиболее логичным будет проверить на соответствие официальным критериям. Вот некоторые примеры валидных адресов email, которые соответствуют критериям.
ORegex: Достаточно ли быстро для объектов?
2016-07-07 в 20:31, admin, рубрики: .net, C#, data mining, ORegex, pattern matching, regex, метки: ORegexДобрый вечер, читатели! Сегодня хочу поделиться небольшими перфоманс оценками ORegex .NET.
Если вы читали мою предыдущую статью здесь, то на мой взгляд было не очень убедительно представлять что-то без сравнительной оценки скорости, Вы так не считаете? Если да, то Вам под кат.
Добрый вечер, читатели!
Сегодня я хочу поделиться с вами таким еще молодым проектом, как ORegex или Object Regular Expressions. Я уже довольно долго работаю в компьютерной лингвистике и хоть я не лингвист, но все же вижу в языках какие-то устоявшиеся конструкции, шаблоны.
Для тех кому интересно, как я решил их выделять — под кат.
Читать полностью »
Я знал, как валидировать email-адрес. Пока не прочитал RFC
2016-01-12 в 23:20, admin, рубрики: e-mail, email, regex, regexp, regular expressions, usability, валидация, веб-дизайн, Веб-разработка, Регулярные выражения, электронная почтаОт переводчика: прочитав статью, начал было отвечать в комментариях, но решил, что текст, на которую я собирался ссылаться, достоин отдельной публикации. Встречайте!
Если вы знаете, как валидировать email-адрес, поднимите руку. Те из вас, кто поднял руку — опустите её немедленно, пока вас кто-нибудь не увидел: это достаточно глупо — сидеть в одиночестве за клавиатурой с поднятой рукой; я говорил в переносном смысле.
До вчерашнего дня я бы тоже поднял руку (в переносном смысле). Мне нужно было проверить валидность email-адреса на сервере. Я это уже делал несколько сот тысяч раз (не шучу — я считал) при помощи классного регулярного выражения из моей личной библиотеки.
В этот раз меня почему-то потянуло ещё раз осмыслить мои предположения. Я никогда не читал (и даже не пролистывал) RFC по email-адресам. Я попросту основывал мою реализацию на основе того, что я подразумевал под корректным email-адресом. Ну, вы в курсе, что обычно говорят о том, кто подразумевает. [прим. перев. Игра слов: «when you assume, you make an ass of you and me» — «когда вы подразумеваете, вы делаете /./удака из себя и из меня»]
И обнаружил кое-что занимательное: почти все регулярные выражения, представлены в интернете как «проверяющие корректность email-адреса», излишне строги.
Читать полностью »
Распарсить HTML в .NET и выжить: анализ и сравнение библиотек
2015-12-23 в 16:02, admin, рубрики: .net, AngleSharp, C#, CsQuery, Fizzler, html, HtmlAgilityPack, regex, парсинг, Программирование, разработка, метки: AngleSharp, CsQuery, Fizzler, HtmlAgilityPack
В ходе работы над одним домашним проектом, столкнулся с необходимостью парсинга HTML. Поиск по гуглу выдал комменарий Athari и его микро-обзор актуальных парсеров HTML в .NET за что ему огромное спасибо.
К сожалению, никаких цифр и/или аргументов в пользу того или иного парсера найдено не было, что послужило поводом к написанию данной статьи.
Сегодня я протестирую популярные, на данный момент, библиотеки для работы с HTML, а именно: AngleSharp, CsQuery, Fizzler, HtmlAgilityPack и, конечно же, Regex-way. Сравню их по скорости работы и удобству использования.
TL;DR: Код всех бенчмарков можно найти на github. Там же лежат результаты тестирования. Самым актуальным парсером на данный момент является AngleSharp — удобный, быстрый, молодежный парсер с удобным API.
Тем, кому интересен подробный обзор — добро пожаловать под кат.
Читать полностью »
Изучаем алгоритм работы регулярных выражений в Ruby
2014-07-24 в 19:22, admin, рубрики: oniguruma, regex, ruby, Алгоритмы, конечные автоматы, Регулярные выражения
Согласно Википедии, Oniguruma означает «колесница дьявола» в переводе с японского.
Мы все знакомы с регулярными выражениями. Они являются «швейцарским армейским ножом разработчика». Чтобы вы не искали, какой бы текст не разбирали, вы всегда можете сделать это используя регулярные выражения. На самом деле, вероятно, вы начали использовать регулярные выражения гораздо раньше, чем стали использовать Ruby — они уже давно включены в большинство популярных языков программирования: Perl, JavaScript, PHP, Java и прочие. Ruby появился в середине 1990-х годов, тогда как регулярные выражения еще в 1960-х, то есть почти на 30 лет раньше!
Но как на самом деле работают регулярные выражения?
Читать полностью »
С регулярно наступающим Новым годом вас!
2013-12-20 в 21:52, admin, рубрики: 2014, regex, ненормальное программирование, Регулярные выражения, метки: 2014, regexНаткнувшись на занятную головоломку на тему регулярных выражений, конечно же я не смог пройти мимо:
В честь наступающего Нового года я набрал в ней 2014 очков. Кто больше?
^(.*oo[^k])|foo$
Anchors
.+ick$
Ranges
^[a-f]{2,}[^m]$
Backrefs
(w{3}).*1.*
Abba
^(?!.*?(w)1).*$|ef
A man, a plan
^(w)(w).*21$
Prime
^x(xx+?)1+$
Four
(w).*1.*1.*1
Order
^[^o].{1,5}$
Triples
Читать полностью »
PyRegs: анализатор регулярных выражений Python 3
2013-06-16 в 14:42, admin, рубрики: python, python3, regex, regular expressions, tkinter, метки: python3, regex, regular expressions, tkinterКогда не стало Kodos
Беда пришла неожиданно. Из Debian Wheezy изъяли старый, добрый PyQt3. А с ним на покой отправился и Kodos — мой любимый дебаггер регулярных выражений Питона. Много лет он помогал тестировать красивые и жуткие конструкци и тот факт, что apt-get install kodos больше не работает, вызвал желание немедленно исправить это досадное недоразумение.
Читать полностью »