You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 9-regular-expressions/08-regexp-greedy-and-lazy/article.md
+7-7Lines changed: 7 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -35,7 +35,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
35
35
Чтобы найти совпадение, движок регулярного выражения работает по следующему алгоритму:
36
36
37
37
- Для каждой позиции в строке
38
-
-Совпадение шаблона на текущей позиции
38
+
-Искать совпадение на данной позиции
39
39
- Если нет совпадения, переход к следующей позиции
40
40
41
41
Эти общие слова никак не объясняют, почему регулярное выражение работает неправильно, так что давайте разберём подробно, как работает шаблон `pattern:".+"`.
@@ -90,13 +90,13 @@ alert( str.match(reg) ); // "witch" and her "broom"
90
90
91
91
**В жадном режиме (по умолчанию) квантификатор повторяется столько раз, сколько это возможно.**
92
92
93
-
Движок регулярного выражения пытается получить максимальное количество символов соответствующих `pattern:.+`, а потом сократить это количество символ за символом.
93
+
Движок регулярного выражения пытается получить максимальное количество символов соответствующих `pattern:.+`, а затем сокращает это количество символ за символом.
94
94
95
95
В нашей задаче мы хотим другого. Для чего и создан ленивый квантификатор.
96
96
97
97
## Ленивый режим
98
98
99
-
Квантификатор ленивого режима противоположен квантификатору жадного. Это значит: "повторяется минимальное количество раз".
99
+
"Ленивый" режим противоположен "жадному". Он означает: "повторять квантификатор наименьшее количество раз".
100
100
101
101
Мы можем включить его, вставив знак вопроса `pattern:'?'` после квантификатора, получая `pattern:*?` или `pattern:+?` или даже `pattern:??` для `pattern:'?'`.
0 commit comments