Модульні уроки (4/4)
Екранування метасимволів
Деякі символи в регулярному виразі мають особливе значення: вони викликаються
мета-символи. Якщо ви хочете зіставити буквальний символ (наприклад, справжній
., дійсний +, дійсна кругла дужка) вам потрібно додати до них префікс
зворотний слеш \, який виключає їх.
Метасимволів, які слід запам’ятати, дванадцять:
. * + ? ^ $ | \ ( ) [ ] { } /(/ насправді не є метасимволом двигуна, але його потрібно екранувати в
буквальна нотація JavaScript /.../.)
Pattern: \$\d+\.\d\d
Sample: Prezzi: $9.99, $12.50, totale $22.49.
^^^^^ ^^^^^^ ^^^^^^Тут ми виводимо $ (прив’язка кінця рядка) і . (знак підстановки), щоб відповідати
літеральні символи у форматі ціни "долар + число + крапка + дві цифри".
Подвійна зворотна коса риска в рядках JS
Коли ви пишете шаблон у рядку JavaScript (як це робите в нашому
вправи) зворотну косу риску потрібно подвоїти. Рядок JS '\\d' містить
два символи (\ та d) і є точно шаблоном регулярного виразу \d.
const re1 = /\d+/; // literal notation: a single backslash
const re2 = new RegExp('\\d+'); // string: double backslashРедактор курсу показує шаблон, який вже розшифрований (ви бачите єдиний
\d); вам не потрібно нічого подвоювати самостійно.
12 спеціальних метасимволів
Символів зі спеціальним значенням у движку рівно 12: \\\ ^ $ . | ? * + ( ) [ {. Якщо ви хочете зіставити їх як буквальний текст, перед ними потрібно поставити зворотну скісну риску. У деяких середовищах (наприклад, необроблені рядки JS) може знадобитися подвоїти зворотну косу риску (\\\\).
Спробуйте
Знайдіть кожну ціну у форматі `$N.NN` (долар, одна або кілька цифр, крапка, дві цифри). Не забудьте екранувати `$` і `.`.
Показати підказку
$ потрібно екранувати як \\$, крапку як \\. - інакше крапка відповідає будь-чому.
Рішення доступне після 3 спроб
Повторна вправа
Знайдіть у тексті кожен буквений знак питання `?`. `?` є метасимволом: його потрібно екранувати.
Показати підказку
Без втечі, ? буде квантором (модуль 2). Поставте \\ перед ним.
Рішення доступне після 3 спроб
Додатковий виклик
Find all occurrences of `.tar.gz` in the text, ensuring that the dots are matched literally.
Показати підказку
Вставте зворотну косу риску перед кожною крапкою, щоб уникнути її.
Рішення доступне після 3 спроб