Перейти до основного вмісту
Модуль 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 спроб