Регулярные выражения, которые вы можете прочитать:
Новый визуальный синтаксис (и пользовательский интерфейс)

Часть 1

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

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

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

(Если вы просто хотите уже использовать его, нажмите здесь, чтобы ввести свой адрес электронной почты, и мы сообщим вам об этом.)

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

Этот не зависящий от диалекта визуальный синтаксис ищет баланс между двумя концами континуума:

  • Традиционные регулярные выражения настолько лаконичны, что трудно различить элементы и их значения. Литералы, синтаксис, подстановочные знаки, заполнители переменных и т. д. смешаны вместе:
    \ b [A- Z0–9 ._% + -] + @ [A-Z0–9 .-] + \. [AZ] {2,4} \ b
  • Некоторые редакторы уже визуализируют регулярные выражения с помощью диаграмм. Их нельзя редактировать напрямую, особенно с клавиатуры. Эти представления обычно очень подробны и поэтому не очень быстро просматриваются.

Пример с regexper.com:

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

Вы пишете регулярное выражение, как обычно. Пользовательский интерфейс визуализирует структуру на лету. Когда вы обнаружите, что не можете вспомнить команду, вы можете нажать ctrl + пробел, чтобы вызвать меню поиска.

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

Поддержка пользовательской памяти

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

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

Чтобы решить эту проблему, мы дополним приведенный выше визуальный синтаксис пользовательским интерфейсом, который позволяет обучаться. Это означает три вещи:

  • Как упоминалось выше, новый визуальный язык не зависит от диалектов. Генерируйте любой диалект из вашего выражения, механизм, стоящий за синтаксисом, позаботится о фактическом генерировании.
  • Постепенное раскрытие для изучения значений специальных элементов. Общая цель - сделать элементы понятными. Однако, чтобы оставаться кратким, не все значения легко видны. Если вы забыли значение символа, вы можете просто навести или щелкнуть на элементах, чтобы получить пояснения о том, что делает каждый элемент.
  • В визуальном синтаксисе символ означает одно и то же, независимо от того, где в выражении он отображается. Традиционный язык регулярных выражений является контекстно-модальным: разные символы означают разные вещи в разных ситуациях и имеют разные правила экранирования. Это особенно верно внутри и вне классов символов []. Эти несоответствия особенно трудно запомнить между использованиями.

Реализация

Это концептуальный дизайн. Идея состоит в том, что визуальный синтаксис будет генерировать традиционные регулярные выражения. Вы могли видеть это как визуальный DSL, который генерирует (едва читаемые человеком) традиционные регулярные выражения. В идеале IDE должны поддерживать этот визуальный синтаксис, чтобы вы могли переключаться между традиционным синтаксисом и этим визуальным.

См. Также Часть 2: Регулярное выражение, которое вы можете прочитать: как это работает для получения дополнительной информации.

@ДЕЛАТЬ

Даже этот синтаксис может стать громоздким, если выражение достаточно сложное.

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

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

Хотя Regex UCR, скорее всего, будет иметь открытый исходный код, нам понадобится ваша финансовая поддержка, чтобы платить кодерам, выполняющим эту работу. Слушайте то, что происходит раньше других, и получайте эксклюзивные привилегии, когда происходит наш краудфандинг. (Добавлено 3 августа 2016 г.)

Свяжитесь со мной, чтобы присоединиться к нашему каналу Slack, если вы хотите поработать вместе над этим и также получите права записи в наш репозиторий github. Мы тепло приветствуем любую помощь в преодолении разрыва от дизайна к коду.

Мы все еще ищем новых людей, которые присоединятся к нам. Мы особенно хотим, чтобы люди

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

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

Кстати, спасибо Брет Виктор. Его работа послужила источником вдохновения для многих из них.

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

См. также Часть 2: Регулярное выражение, которое вы можете прочитать: как оно работает с другими примерами синтаксиса.

(Изображение из части 2 с добавленным меню поиска 2018–11–03)