Перейти к основному содержимому
Модуль 1 · Урок 4 из 44/32 в курсе~10 min
Уроки модуля (4/4)

Экранирование метасимволов

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

Метасимволов, которые следует запомнить, двенадцать:

Code
.  *  +  ?  ^  $  |  \  (  )  [  ]  {  }  /

(/ на самом деле не является метасимволом движка, но его необходимо экранировать в буквенная запись JavaScript /.../.)

Code
Pattern: \$\d+\.\d\d
Sample:  Prezzi: $9.99, $12.50, totale $22.49.
                 ^^^^^  ^^^^^^         ^^^^^^

Здесь мы экранируем $ (привязку конца строки) и . (подстановочный знак), чтобы соответствовать буквенные символы в формате цены «доллар + число + точка + две цифры».

Двойная обратная косая черта в строках JS

Когда вы пишете шаблон внутри строки JavaScript (как в нашем упражнения) обратная косая черта должна быть удвоена. Строка JS '\\d' содержит два символа (\ и d) и в точности соответствует шаблону регулярного выражения \d.

JS
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslash

Редактор курса показывает уже декодированный шаблон (вы видите один \d); вам не придется ничего удваивать самостоятельно.

12 специальных метасимволов

Символов со специальным значением в движке ровно 12: \\\ ^ $ . | ? * + ( ) [ {. Если вы хотите сопоставить их как обычный текст, перед ними необходимо поставить обратную косую черту. В некоторых средах (например, необработанные строки JS) вам может потребоваться удвоить обратную косую черту (\\\\).

Попробуйте это

Упражнение#regex.m1.l4.e1
Попыток: 0Загрузка…

Найдите каждую цену в формате `$N.NN` (доллар, одна или несколько цифр, точка, две цифры). Не забудьте экранировать `$` и `.`.

Загрузка редактора…
Показать подсказку

$ должен быть экранирован как \\$, точка — как \\. - в противном случае точка соответствует чему угодно.

Решение доступно после 3 попыток

Обзор упражнения

Упражнение#regex.m1.l4.e2
Попыток: 0Загрузка…

Найдите в тексте каждый буквальный вопросительный знак `?`. `?` — это метасимвол: его необходимо экранировать.

Загрузка редактора…
Показать подсказку

Без побега, ? будет квантором (модуль 2). Поставьте \\ перед ним.

Решение доступно после 3 попыток

Дополнительная задача

Упражнение#regex.m1.l4.e3
Попыток: 0Загрузка…

Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.

Загрузка редактора…
Показать подсказку

Вставьте обратную косую черту перед каждой точкой, чтобы избежать ее.

Решение доступно после 3 попыток