-
Notifications
You must be signed in to change notification settings - Fork 182
Greedy and lazy quantifiers #450
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
dolgachio
merged 7 commits into
javascript-tutorial:master
from
SamGreenberg:greedy-and-lazy-quantifiers
Aug 22, 2023
Merged
Changes from 4 commits
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
759176b
Methods of RegExp and String
SamGreenberg a536fb4
Greedy and lazy quantifiers
SamGreenberg b8c9a35
Merge branch 'master' into greedy-and-lazy-quantifiers
SamGreenberg 3ecf4d0
Merge branch 'master' into greedy-and-lazy-quantifiers
dolgachio 60c0824
Apply suggestions from code review
dolgachio fa8e2d8
Apply suggestions from code review
dolgachio 42f8dcc
Apply suggestions from code review
dolgachio File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
6 changes: 3 additions & 3 deletions
6
9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/solution.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,6 +1,6 @@ | ||
|
||
The result is: `match:123 4`. | ||
Результат: `match:123 4`. | ||
|
||
First the lazy `pattern:\d+?` tries to take as little digits as it can, but it has to reach the space, so it takes `match:123`. | ||
Для початку, лінивий `pattern:\d+?` намагається взяти мінімальну можливу кількість цифр, але він має дійти до пробілу, тож обирається `match:123`. | ||
|
||
Then the second `\d+?` takes only one digit, because that's enough. | ||
Далі, другий `\d+?` обере лише одну тему, бо цього достатньо. | ||
4 changes: 2 additions & 2 deletions
4
9-regular-expressions/10-regexp-greedy-and-lazy/1-lazy-greedy/task.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
10 changes: 5 additions & 5 deletions
10
9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/solution.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
We need to find the beginning of the comment `match:<!--`, then everything till the end of `match:-->`. | ||
Нам потрібно знайти початок коментарю `match:<!--`, та весь контент до кінця `match:-->`. | ||
dolgachio marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
An acceptable variant is `pattern:<!--.*?-->` -- the lazy quantifier makes the dot stop right before `match:-->`. We also need to add flag `pattern:s` for the dot to include newlines. | ||
Прийнятним є варіант `pattern:<!--.*?-->` -- лінивий квантифікатор зупиняє крапку прямо перед `match:-->`. Нам також треба додати прапор `pattern:s`, аби крапка включала символи нового рядку. | ||
dolgachio marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
||
Otherwise multiline comments won't be found: | ||
Інакше коментарі на кілька рядків не знаходитимуться: | ||
|
||
```js run | ||
let regexp = /<!--.*?-->/gs; | ||
|
||
let str = `... <!-- My -- comment | ||
let str = `... <!-- Мій -- коментар | ||
test --> .. <!----> .. | ||
`; | ||
|
||
alert( str.match(regexp) ); // '<!-- My -- comment \n test -->', '<!---->' | ||
alert( str.match(regexp) ); // '<!-- Мій -- коментар \n test -->', '<!---->' | ||
``` |
10 changes: 5 additions & 5 deletions
10
9-regular-expressions/10-regexp-greedy-and-lazy/3-find-html-comments/task.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
# Find HTML comments | ||
# Знайти HTML коментарі | ||
|
||
Find all HTML comments in the text: | ||
Знайти всі HTML коментарі в тексті: | ||
|
||
```js | ||
let regexp = /your regexp/g; | ||
let regexp = /ваш регулярний вираз/g; | ||
|
||
let str = `... <!-- My -- comment | ||
let str = `... <!-- Мій -- коментар | ||
test --> .. <!----> .. | ||
`; | ||
|
||
alert( str.match(regexp) ); // '<!-- My -- comment \n test -->', '<!---->' | ||
alert( str.match(regexp) ); // '<!-- Мій -- коментар \n test -->', '<!---->' | ||
``` |
2 changes: 1 addition & 1 deletion
2
...-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/solution.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,5 +1,5 @@ | ||
|
||
The solution is `pattern:<[^<>]+>`. | ||
Відповідь: `pattern:<[^<>]+>`. | ||
|
||
```js run | ||
let regexp = /<[^<>]+>/g; | ||
|
10 changes: 5 additions & 5 deletions
10
...ular-expressions/10-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,15 +1,15 @@ | ||
# Find HTML tags | ||
# Знайти HTML теги | ||
|
||
Create a regular expression to find all (opening and closing) HTML tags with their attributes. | ||
Створити регулярний вираз для пошуку всіх (відкриваючих та закриваючих) HTML тегів з їх атрибутами. | ||
|
||
An example of use: | ||
Приклад використання: | ||
|
||
```js run | ||
let regexp = /your regexp/g; | ||
let regexp = /ваш регулярний вираз/g; | ||
|
||
let str = '<> <a href="/"> <input type="radio" checked> <b>'; | ||
|
||
alert( str.match(regexp) ); // '<a href="/">', '<input type="radio" checked>', '<b>' | ||
``` | ||
|
||
Here we assume that tag attributes may not contain `<` and `>` (inside quotes too), that simplifies things a bit. | ||
Тут ми припускаємо, що атрибути тегу не містять `<` та `>` (внутрішні лапки) для спрощення задачі. |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.