Pull to refresh

Comments 66

Хоть вы и старались упростить интерфейс всё равно получилась КДПВ из поста.
Неподготовленному пользователю данный интерфейс никак не поможет, а подготовленному он и не нужен.
Да и не совсем я понимаю пользу от валидации без замены…
Простой интерфейс — это была моя самая большая боль. Пробовал разные варианты, но на данный это максимум что я смог получить.

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

P.S. пожалуйста, только не предлагайте пределать в простой tester, т.к. цель именно не в ручном в создании регулярки.
Программирование мышкой состоит всегда из двух этапов — нащелкивание мышкой / ввод с клавиатуры и отображение результата.
В вашем случае по центру должно быть поле, где юзер нащелкивает мышкой/вводит параметры регулярки, а под ним — текст с получившейся регуляркой. Ну и где-нибудь спрятаны опции всякие разные, за раскрывающимся блоком.
UFO just landed and posted this here
UFO just landed and posted this here
Ох я не завидую программистам, которым потом поддерживать эти user-generated регулярки…
Как уже написали выше, сложность изучения регулярных выражений сопоставима со сложностью вашего интерфейса (если не ниже). Поэтому везде находятся сервисы для проверки и объяснения уже составленных выражений, потому что они позволяют неискушенному пользователю визуально понять, что нужно сделать, что он сделал так, а что не так. Ради интереса, возьмите любого неподготовленного пользователя, выдайте ему в зубы задачу (например выделить в произвольном тексте email) и сайт вроде https://regex101.com/. Я уверен, что пользователь разберется с регэкспами (по-крайней мере на базовым уровне) быстрее, чем с вашим интерфейсом.
О части я с вами согласен.

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

Как я писал выше, первая проблема, встающая перед новичком — это: «А как вообще создать регулярку и как создать ее рабочей?». И тут он может немного сэкономить. Согласитесь, что на примерах всегда проще и быстрее учиться.

Особенно это актуально, когда просто нету на это целого «вагона» времени.

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

Примеры вот только у вас плохому учат.

На мой взгляд, для начинающих и продолжающих гораздо полезнее будут программы типа https://www.regexbuddy.com/

«А как вообще создать регулярку и как создать ее рабочей?».
Правильный ответ — найти статью, объясняющую основы регулярных выражений, после усвоения которой продолжать тренироваться и курить мануалы.
Простите. Но следуя вашей логике, все мы должны еще программировать на Ассемблере и писать код не в IDE, а в консоли.

Я серьезно.
Зачем нам высокоуровневые абстракции?
Зачем нам GUI, если есть консоль?
Зачем что-то вообще автоматизировать/улучшать/облегчать?
Зачем вообще прогресс?
Не очень понятно, как из моего «стоит знать инструмент, который используешь» получилось ваше «долой прогресс».

Программист, который рассчитывает не на собственные знания, а на онлайн-сервис, который сгенерирует регулярное выражение за него, очень рискует. Сервис рано или поздно прекратит существование и такой программист останется у разбитого корыта с, теперь бесполезными, знаниями интерфейса этого сервиса.
Сорри за некропостинг, но чего тут все на автора накинулись? Не хочешь использовать сервис — не используй. При чём тут сам сервис? Давайте удалим любую справочную информацию из инета, пусть сами заучивают — так что ли?
Мне, например, постоянно надо что-то кодировать в base64. Вы знаете что такое base64? Все знают что это такое. Но практически никто не умеет это делать вручную, а используют различный софт.
Вы путаете теплое с мягким.
В первую очередь у автора неудобный интерфейс.
Я вот припоминаю, что тоже пошел на сайт автора, и несмотря на то, что читал курсы по регуляркам, не понял как это сделать этим сервисом.

Регулярки — вещь которая адаптивно пишется под любой случай. а base64 это алгоритм, который одинаковый для всех случаев.
«Не истери!» — Сказал бы мой знакомый…

Сколько фронтендеров приходит собеседоваться которые умеют jQuery, но не умеют Vanilla JS. Люди изучают фреймворки не изучая основы, а потом жалуются на то, что всё тормозит и ускорить приложение нельзя.

Инструментами для ускорения разработки пользоваться определённо надо. Главное чтобы эти инструменты не мешали работе приложения.

Это я к тому что надо знать основы, чтобы знать что и почему происходит. И знать где подкрутить чтобы всё начало летать, а не ползать. Это вам скажет любой разработчик highload сервиса. А регулярки частенько бывают причиной тормозов. Достаточно вспомнить wordpress(хотя не знаю что у них сейчас там, но раньше был регулярный ад).
Продуманно не правильно. Зачем вообще нужны регулярки? Чтобы выдернуть из строки/текста некие данные.
Значит и «Автогенератор» надо было делать примерно так:
1. Искомая строка
2. Массив данных, которые мы бы хотели выдрать

Тоесть:
1. Имя Фамилия Отчество
2. Фамилия
Regex: [а-ЯёЁ]+\s+([а-ЯёЁ]+)\s+[а-ЯёЁ]+\s+
(Или просто "([а-ЯёЁ]+)" и забирать второй элемент из результата)
Нет. Эти регулярки работают со строками/текстом, которые приходят нам от пользователя. Не важно на клиенте это или на сервере. Наша задача — проверить что введенные данные действительно соответствуют нашим ожиданиям (регулярке).
UFO just landed and posted this here

Да, а ещё: бывают фамилии, начинающиеся со строчной, фамилии содержащие пробел, содержащие дефис, апостроф, и т.д.

>Практически в 100% случаев нам совершенно не нравится их составлять

Практически в 100% случаев программистам нравится составлять регулярки.
А вот красивости программистам не нужны. Достаточно консоли
UFO just landed and posted this here
К автору поста вопросов нет?
UFO just landed and posted this here
То есть, когда автор поста говорит «Практически в 100% случаев нам совершенно не нравится их составлять», то вопросов к нему нет, а ко мне есть? Оооокей.
Будь более последовательным и логичным в своих рассуждениях, падаван.
UFO just landed and posted this here
UFO just landed and posted this here
А я поддерживаю. Кайф от использования regex в Perl трудно описать человеческим языком.
UFO just landed and posted this here
Понял свою ошибку. Только холиваров не надо!
UFO just landed and posted this here
Такой сервис будет очень полезен аналитикам, которые работают с Enterprise платформами анализа данных. Они не программисты, регулярки писать не умеют, но им надо. Отправил ссылку на сервис нашим.
Как и писал в статье, именно от таких сотрудников и пришел первоначальный запрос на подобный функционал.
> Я просто пытался понять, кому может реально пригодится ваш сервис.

Вообще говоря, любым людям, которым иногда надо писать регулярки. В таких случаях синтаксис за пределами базового обычно не запоминается, и, чтобы каждый раз не лезть в справочник, удобно иметь генератор (если он удобный :)).
Но… Разработчики! Поднимите руку, кто считает, что работа с регулярками — побочная и не связана с программированием?

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

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

И да, мне нравятся регулярки :)
Удобство интерфейса для пользователя хотелось бы получше, а то слишком много всего.
Кстати, в примерах неверное регулярное выражение для IP адреса: числа не могут превышать 255.
Про интерефейс полностью согласен. Надеюсь на большое число конструктивных отзывов.
IP — спасибо, пропустил.
Круто! Только хорошо было бы положить исходники на github, чтоб можно было всегда развернуть в своей сети.
А то веб сервисы бывает перестают существовать через некоторое время. Да и можно будет делать пулл-реквесты с улучшениями.

И еще хак — если там все на JS, то можно кажись на гитхабе создать статичный сайт, он будет вечный)
https://uiregex.firebaseapp.com/ru — настоящий урл сервиса. Тоже «вечный» и бесплатный. А тот короткий — просто зеркало.

На гитхабе хостинг одностраничных приложений на порядок хуже чем в Firebase (нет html5Mode, настроек кэширования файлов, редиректов ...)
Giок, по сайту супер. По исходниками вопрос открыт)
Пока не спешу открывать исходники. Возможно позже, когда выйдет версия 2.0
На правах зануды:

Как водится, пример регулярки для email — неправильный.
Контрпримеры:
  • user@192.168.1.1
  • konishiwa+hello@world.co.uk
Да. Эти варианты в примере скорее всего будут полезны. Добавлю, спасибо.

Знаю что есть еще вариант доменов на кириллице или других письменностях, но указывать их все в примере — это уже перебор.
user@192.168.1.1
konishiwa+hello@world.co.uk

В RegExr, про который ниже писал, пример валидации выглядит так:
/^(?:(?:[\w`~!#$%^&*\-=+;:{}'|,?\/]+(?:(?:\.(?:"(?:\\?[\w`~!#$%^&*\-=+;:{}'|,?\/\.()<>\[\] @]|\\"|\\\\)*"|[\w`~!#$%^&*\-=+;:{}'|,?\/]+))*\.[\w`~!#$%^&*\-=+;:{}'|,?\/]+)?)|(?:"(?:\\?[\w`~!#$%^&*\-=+;:{}'|,?\/\.()<>\[\] @]|\\"|\\\\)+"))@(?:[a-zA-Z\d\-]+(?:\.[a-zA-Z\d\-]+)*|\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\])$/

:)

Написано что валидирует все примеры из вики, кроме вариантов с IPv6.
Меня \d{1,3} не устравивает для валидации ип адресов. Потому что 456.23.892.21 попадает под эту регулярку.

Я использую "(?<![0-9])(?:(?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5])[.](?:[0-1]?[0-9]{1,2}|2[0-4][0-9]|25[0-5]))(?![0-9])"

Я не совсем понял, как именно вы упростили интерфейс, но… в тренинг центре нашей компании я подготовил небольшой курс по регуляркам и прочитал его студентам уже несколько раз.
А на вашем сайте я не смог составить простейшую регулярку с бэкреференсом, потратив целых 5 минут…
Я мог бы быть целевой аудиторией. Потому что регулярные выражения использую достаточно редко, чтобы успеть забыть синтаксис, и потому каждый раз вынужден перечитывать документацию. Но. Во-первых, как уже сказали — интерфейс нисколько не интуитивен. Мне проще каждый раз перечитать документацию по регэкспам, чем каждый раз перечитать инструкцию к подобному сервису. Да и полезнее пожалуй, может со временем запомнится. Во-вторых — проверка валидации — только одна из задач, решаемых с помощью регэкспов, что делает использование этого инструмента ещё более неоправданным.
Так что я в смятении — с одной стороны, я благодарен даже за попытку облегчить жизнь таким людям как я, с другой — облегчения как-то не наступило(
Зависает крипт на странице при попытке входа на нее. Вешается весь браузер. Firefox 33.
Есть такая полезная штука как awesome lists — сборник всяких полезностей и туториалов. Вот там, кроме уже упомянутого RegEx101, нашел еще RegExr — с блэкджеком и ... примерами, хинтами и «выбором сообщества».
Есть еще RegExpBuilder, очень похоже на то что описано в посте, только библиотека для JS.

Может кому пригодится.
Простите. Но сравнивать Генератор с тестером — это как сравнивать программиста с тестировщиком.

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

Надеюсь теперь, наконец, станет понятна та мысль, которую я хотел донести с самого начала.
На мой взгляд, идеальный визуальный генератор должен выглядеть так:
Пользователь выделяет часть текста и генератор показывает ему выражение для такого выделения с опциями длины групп и наборов символов.
К сожалению, не сработает.
Как в таком редакторе указать, что длина должна быть четной?
Первая версия регулярного выражения будет либо слишком ограниченной и тогда придется добавлять множество вариантов граничных случаев.
Либо она будет слишком широкой, и граничные случаи придется отсекать.
При таких итерациях формула будет переходить от одного состояния ко второму.
UFO just landed and posted this here
Ну это само собой, как без этого, кому нужны регулярки вида \w+. А ещё что-бы предлагал на выбор не одно, а несколько возможный регулярных выражений. И конечно выделение другого блока текста чтобы модифицировало выражение с учетом всех раннее выделенных.
Прочитал руководство, не могу понять самого главного: как все-таки написать регекс средствами вашего приложения? Пока могу только pcre-строкой занести…
Для работы, если это не точное правило, нужны как минимум примеры с «пограничными» значениями. Например, это могут быть строки минимальной и максимальной длины,…

Чем больше будет примеров для того, что вы действительно хотите провалидировать — тем лучше будет результат (в теории).
Здравствуйте. Идея очень интересная.

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

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

cat /path/to/file | grep -v '#'

или
cat /path/to/file | grep -v '^#'
Очень хороший сервис есть http://txt2re.com/ Выручал много раз!!! Причем сразу регулярку переводит в программный код.
Посмотрел. Довольно интересное они выбрали решение и в отличие от предыдущих комментариев — это действительно Генератор.
Мне кажется именно об этом и писал alexeyw в своем первом комментарии.
в общем-то круто, только сделайте генерацию, плиз, чуток поумнее :)

eEe.mail@google.com
/^[a-z]{1}[A-Z]{1}[a-z]{1}[.]{1}[a-z]{4}[@]{1}[a-z]{6}[.]{1}[a-z]{3}$/


т.е. фактически это не сработает для
eee.mail@google.com
eE.mail@google.com
и т.д…

было бы не плохо увидеть хотя бы так (заменил [a-zA-Z]):
/^[a-zA-Z]+[.]{1}[a-z]{4}[@]{1}[a-z]{6}[.]{1}[a-z]{3}$/

ну так далее…

регулярка в общем-то нужна, чтоб находить вариации в тексте, если находить только точные совпадения, то нафига регулярка тогда вообще нужна…
От данного сервиса легче их составлять не стало, к сожалению.
Интерфейс и вправду непонятный. Прочитал все пункты первоначального обучения, но оно нисколько не облегчило понимание. Почему в поле «Тестовое поле» мне указывают «должно быть:...»? На основании чего алгоритм решил что «должно»? Что мне таким образом он пытается дать понять? Что у меня неправильное правило? Как по проверочной строке можно понять «дефектность» правила? Тем более это же тестовое поле и я должен для проверки вводить что угодно, чтобы понять что получится на выходе. Или предназначение «Тестового поля» в совсем другом?
«Сопоставлять строки», «Точные символы», «Блокировать символы» что это? Какие то поля с помощью которых можно внести изменения в правило? Вроде нет. После нажатия кнопки «Генерировать» правило не всегда меняется. Чаще меняются только «рекомендации» «что мне делать» в поле «Должно быть». Да почему «должно быть» то? Мне машина указывает как я должен составить RegEx, потому что она так решила? Я же написал, что хочу найти в поле «Сопоставлять строки», почему оно не попадает в RegEx?
В общем назовите как-то этот блок, чтобы было понятно по какому принципу в нём оказались эти поля.
«Блокировать символы» — что это за операция такая? В каком смысле блокировать? Зачем нужно блокировать? Вы не пробовали использовать синонимы этого слова для большей понятности? Блокировкой можно как-то отсечь\исключить ненужный фрагмент из текста?
Еще мне кажется проблема вашего интерфейса в том, что вы придумали для типовых операций собственные термины понятные только вам, вместо того, чтобы использовать стандартные описания RegEx. Это всё равно, что для названия элемента интерфейса «переключатель», используемого Microsoft и 1C в русскоязычной документации к своим продуктам, называть его как радиокнопка или радиобаттон.
В общем, как я ни пытался, так и не понял как генерировать RegEx на этом сервисе и его предназначение
Sign up to leave a comment.

Articles