* fix(curriculum): Find Characters with Lazy Matching * Update PR Note is moved in the Description section and not the Instructions section
2.0 KiB
2.0 KiB
id, title, challengeType
id | title | challengeType |
---|---|---|
587d7db6367417b2b2512b9b | Find Characters with Lazy Matching | 1 |
Description
greedy
match finds the longest possible part of a string that fits the regex pattern and returns it as a match. The alternative is called a lazy
match, which finds the smallest possible part of the string that satisfies the regex pattern.
You can apply the regex /t[a-z]*i/
to the string "titanic"
. This regex is basically a pattern that starts with t
, ends with i
, and has some letters in between.
Regular expressions are by default greedy
, so the match would return ["titani"]
. It finds the largest sub-string possible to fit the pattern.
However, you can use the ?
character to change it to lazy
matching. "titanic"
matched against the adjusted regex of /t[a-z]*?i/
returns ["ti"]
.
NoteParsing HTML with regular expressions should be avoided, but pattern matching an HTML string with regular expressions is completely fine.
Instructions
/<.*>/
to return the HTML tag <h1>
and not the text "<h1>Winter is coming</h1>"
. Remember the wildcard .
in a regular expression matches any character.
Tests
tests:
- text: The <code>result</code> variable should be an array with <code><h1></code> in it
testString: assert(result[0] == '<h1>', 'The <code>result</code> variable should be an array with <code><h1></code> in it');
Challenge Seed
let text = "<h1>Winter is coming</h1>";
let myRegex = /<.*>/; // Change this line
let result = text.match(myRegex);
Solution
// solution required