Перейти к основному содержимому
eLearner.app

Интерактивный курс

Курс регулярных выражений

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

01 · Модуль 1 — Основы

4 уроков

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

  1. 1.1Буквальные шаблоныОбычные символы, чувствительность к регистру и первый запуск: совпадение и индекс.~8 min
  2. 1.2Базовые классы: \d \w \sПредопределенные классы для цифр, словесных символов и пробелов (и их отрицательные версии).~10 min
  3. 1.3Подстановочный знак: точка `.`Символ `.` соответствует почти всему: что он включает, что исключает и почему важен флаг `s`.~8 min
  4. 1.4Экранирование метасимволов12 метасимволов, которые нужно экранировать с помощью `\`, когда вам нужна двойная обратная косая черта и почему.~10 min

02 · Модуль 2 — Кванторы

4 уроков

Сколько повторять: `*`, `+`, `?`, интервалы `{n,m}` и разница между жадным и ленивым.

  1. 2.1`*`, `+`, `?`Ноль или более, один или более, необязательно: три основных квантификатора.~10 min
  2. 2.2Точные количества `{n,m}`Именно `n`, от `n` до `m`, хотя бы `n`: числовой квантификатор.~10 min
  3. 2.3Жадный против ленивогоПо умолчанию квантификаторы являются жадными (`.*`); добавьте `?` для ленивой версии (`.*?`).~10 min
  4. 2.4Возврат: обзорЧто делает механизм, когда жадный квантификатор выходит из строя, и почему это может быть дорого.~12 min

03 · Модуль 3 — Якоря и границы

4 уроков

Позиция, а не символы: привязка к началу/концу строки, границам слов и началу/концу каждой строки с помощью флага `m`.

  1. 3.1Начало и конец: `^` и `$`Привязка шаблона к первому или последнему символу строки.~8 min
  2. 3.2Границы слов: `\b` `\B`Переход между словесными и несловными символами; нахождение целых слов.~10 min
  3. 3.3Флаг `m`: многострочныйС флагом `m` `^` и `$` привязываются к началу/концу каждой строки.~10 min
  4. 3.4Пустые строки и обрезкаПолезные шаблоны: сопоставление пустых строк, обрезка пробелов в начале/конце строки.~10 min

04 · Модуль 4 — Группы и чередование

4 уроков

Группируйте с помощью `()`, выбирайте среди альтернатив с помощью `|`, избегайте захвата с помощью `(?:...)`, именуйте группы с помощью `(?<name>...)` и возвращайтесь к предыдущему захвату с помощью обратных ссылок.

  1. 4.1Группы захвата: `(...)`Круглые скобки для группировки и захвата; группы доступа 1, 2, 3… в матчах.~10 min
  2. 4.2Чередование: `|`Труба выбирает между двумя или более подшаблонами; приоритет и круглые скобки.~10 min
  3. 4.3Группы без захвата: `(?:...)`Группировать без создания захвата: полезно, когда вам нужно только количественно оценить или чередовать.~10 min
  4. 4.4Именованные группы и обратные ссылки`(?<имя>...)`, чтобы дать имя; `\1` `\k<name>` для возврата к захвату.~12 min

05 · Модуль 5 — Классы персонажей

4 уроков

Определите пользовательские наборы с помощью `[...]`, используйте диапазоны, инвертируйте с помощью `[^...]` и получите доступ к свойствам Unicode с помощью `\p{...}` и флага `u`.

  1. 5.1Наборы символов: `[abc]`Квадратные скобки определяют набор символов, разрешенных в одной позиции.~8 min
  2. 5.2Диапазоны внутри классов: `[a-z0-9]`Интервалы через тире; объединение диапазонов и отдельных символов.~8 min
  3. 5.3Отрицание: `[^...]`Отрицательный класс соответствует чему угодно, **кроме** перечисленных символов.~8 min
  4. 5.4Экранирование свойств Юникода`\p{L}`, `\p{N}`, `\p{Script=...}` с флагом `u`: семантические классы Юникода.~12 min

06 · Модуль 6 — Обзор

4 уроков

Утверждения нулевой ширины: просмотр строки вперед или назад без использования символов. Просмотр вперед `(?=)` `(?!)`, просмотр назад `(?<=)` `(?<!)`.

  1. 6.1Позитивный прогноз: `(?=...)`Убедитесь, что определенный шаблон следует за текущей позицией, не потребляя ее.~10 min
  2. 6.2Отрицательный прогноз: `(?!...)`Убедитесь, что определенный шаблон НЕ соответствует текущей позиции.~10 min
  3. 6.3Просмотр назад: `(?<=...)` `(?<!...)`Версии обзора «назад»; Поддержка ES2018+.~12 min
  4. 6.4Обзор на практикеИзвлекайте значение без включения контекста, проверяйте пароли, анализируйте числа с разделителями.~12 min

07 · Модуль 7 — Флаги, замена, разделение

4 уроков

Все флаги (включая `d`, `v`), `String.prototype.replace`/`replaceAll`/`split` с регулярным выражением, ссылаются на `$1`/`$<name>` в строке подстановки и заменяют обратные вызовы.

  1. 7.1Все флаги подробно`g i m s u v y d`: что делает каждый и как они сочетаются.~12 min
  2. 7.2Базовая замена и `$1`Замените совпадения фиксированной строкой или обратными ссылками `$1` / `$<name>`.~10 min
  3. 7.3Заменить обратным вызовомФункция подстановки: преобразование каждого совпадения произвольным JS-кодом, доступ к группам.~12 min
  4. 7.4Разделить с помощью регулярного выраженияРазделить строку по шаблону (разрешенный CSV, минимальный токенизатор).~10 min

08 · Модуль 8 — Практика

4 уроков

Объедините все это для решения реальных задач: проверяйте электронную почту, анализируйте журналы, извлекайте URL-адреса/IP-адреса, записывайте шаблоны, устойчивые к ReDoS.

  1. 8.1Проверка электронной почты«Достаточно хороший» шаблон для электронной почты с объяснением компромиссов.~12 min
  2. 8.2Парсер журналов ApacheИзвлеките IP-адрес, метод, путь и код состояния из строки журнала, используя именованные группы.~12 min
  3. 8.3Извлечение URL-адресов и IP-адресовРаспознавайте URL-адреса http(s) и IPv4-адреса в произвольной форме.~12 min
  4. 8.4Написание шаблонов, безопасных для ReDoS.Распознавайте катастрофические шаблоны (`(a+)+b`), проводите их рефакторинг, используйте атомарные кванторы.~14 min