Files
freeCodeCamp/curriculum/challenges/ukrainian/02-javascript-algorithms-and-data-structures/regular-expressions/find-characters-with-lazy-matching.md

2.9 KiB
Raw Blame History

id, title, challengeType, forumTopicId, dashedName
id title challengeType forumTopicId dashedName
587d7db6367417b2b2512b9b Як знайти символи за допомогою "лінивого" збігу 1 301341 find-characters-with-lazy-matching

--description--

У регулярних виразах "жадібний" збіг (greedy) знаходить найдовшу можливу частину рядка, яка відповідає шаблону регулярного виразу та видає його як збіг. Альтернативою є "лінивий" збіг (lazy), який знаходить найменшу можливу частину рядка, що відповідає шаблону регулярного виразу.

Ви можете застосувати регулярний вираз /t[a-z]*i/ до рядка "titanic". Цей регулярний вираз фактично є шаблоном, який починається з t, закінчується на i та має кілька літер між ними.

Регулярні вирази за замовчуванням "жадібні", тому збіг видасть ["titani"]. Він знаходить найбільший можливий підрядок, який відповідає шаблону.

Однак ви можете застосувати символ ?, щоб змінити його на "лінивий" пошук збігів. Код "titanic", зіставлений зі скоригованим регулярним виразом /t[a-z]*?i/, видає ["ti"].

Примітка: Слід уникати синтаксичного аналізу HTML регулярних виразів, але ви можете зіставляти рядок HTML з шаблоном за допомогою регулярних виразів.

--instructions--

Виправте регулярний вираз /<.*>/, аби він видав теґ HTML <h1>, а не текст "<h1>Winter is coming</h1>". Пам'ятайте, що спеціальний символ . в регулярному виразі відповідає будь-якому символу.

--hints--

Змінна result повинна бути масивом, який містить <h1>

assert(result[0] == '<h1>');

myRegex повинен використовувати "лінивий" пошук збігів

assert(/[^\\][\*\+\?]\?/.test(myRegex));

myRegex не повинен містити рядок h1

assert(!myRegex.source.match('h1'));

--seed--

--seed-contents--

let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*>/; // Change this line
let result = text.match(myRegex);

--solutions--

let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*?>/; // Change this line
let result = text.match(myRegex);