freeCodeCamp/curriculum/challenges/arabic/02-javascript-algorithms-an.../regular-expressions/find-characters-with-lazy-m...

2.2 KiB

id title challengeType forumTopicId dashedName
587d7db6367417b2b2512b9b Find Characters with Lazy Matching 1 301341 find-characters-with-lazy-matching

--description--

في الـ regular expressions ، تعثر المطابقة من نوع greedy على أطول جزء ممكن من الـ string الذي يلائم نمط الـ regex، وترجعه كمطابق. البديل يسمى مطابقة من نوع lazy والتي تجد أصغر جزء ممكن من الـ string الذي يستوفي نمط الـ regex.

يمكنك تطبيق الـ regex الآتي /t[a-z]*i/ على السلسلة "titanic". الـ regex هذا هو في الأساس نمط يبدأ بـ t، وينتهي بـ i، ولديه بعض الحروف بينهما.

الـ Regular expressions هي greedy بشكل افتراضي، لذا فإن المطابقة ستعيد ["titani"]. وهي تجد أكبر سلسلة فرعية (sub-string) ممكنة لتتناسب مع النمط.

ومع ذلك، يمكنك استخدام رمز ? لتغييره إلى تطابق lazy. مطابقة "titanic" للـ regex المعدل /t[a-z]*?i/ يعيد ["ti"].

ملاحظة: يجب تجنب تحليل HTML باستخدام الـ regular expressions، ولكن لا بأس من مطابقة نمط لـ HTML string مع الـ regular expressions.

--instructions--

قم بإصلاح /<.*>/ لإرجاع الـ HTML tag الآتي <h1> وليس النص "<h1>Winter is coming</h1>". تذكر ان الرمز . في الـ regular expression، يطابق أي حرف.

--hints--

متغير result يجب أن يكون array مع <h1> بداخله

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

myRegex يجب أن يستخدم المطابقة الـ lazy

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