2.9 KiB
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);