Skip to content

Commit 022ea1b

Browse files
committed
iliakan review
1 parent 6f8f1dd commit 022ea1b

3 files changed

Lines changed: 10 additions & 10 deletions

File tree

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
Результат будет: `match:123 4`.
33

4-
Первый, ленивый шаблон, `pattern:\d+?` попытается получить так можно мало цифр, пока не встретит пробела, поэтому совпадением будет `match:123`.
4+
Первый, ленивый шаблон, `pattern:\d+?` попытается получить как можно меньше цифр до первого пробела, поэтому совпадением будет `match:123`.
55

66
Тогда второй `\d+?` возьмёт только одну цифру, потому что этого будет достаточно.

9-regular-expressions/08-regexp-greedy-and-lazy/4-find-html-tags-greedy-lazy/task.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
Создайте регулярное выражение, чтобы найти все (открывающие и закрывающие) HTML-теги с их атрибутами.
44

5-
Один пример использования:
5+
Пример использования:
66

77
```js run
88
let reg = /ваше регулярное выражение/g;
@@ -12,4 +12,4 @@ let str = '<> <a href="/"> <input type="radio" checked> <b>';
1212
alert( str.match(reg) ); // '<a href="/">', '<input type="radio" checked>', '<b>'
1313
```
1414

15-
Давайте предположим, что внутри не может быть `<` и `>` (в кавычках тоже), что немного упростит решение.
15+
В этой задаче мы предполагаем, что атрибуты тегов не содержат `<` и `>` (и в кавычках тоже), это немного упрощает её решение.

9-regular-expressions/08-regexp-greedy-and-lazy/article.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
3535
Чтобы найти совпадение, движок регулярного выражения работает по следующему алгоритму:
3636

3737
- Для каждой позиции в строке
38-
- Совпадение шаблона на текущей позиции
38+
- Искать совпадение на данной позиции
3939
- Если нет совпадения, переход к следующей позиции
4040

4141
Эти общие слова никак не объясняют, почему регулярное выражение работает неправильно, так что давайте разберём подробно, как работает шаблон `pattern:".+"`.
@@ -90,13 +90,13 @@ alert( str.match(reg) ); // "witch" and her "broom"
9090

9191
**В жадном режиме (по умолчанию) квантификатор повторяется столько раз, сколько это возможно.**
9292

93-
Движок регулярного выражения пытается получить максимальное количество символов соответствующих `pattern:.+`, а потом сократить это количество символ за символом.
93+
Движок регулярного выражения пытается получить максимальное количество символов соответствующих `pattern:.+`, а затем сокращает это количество символ за символом.
9494

9595
В нашей задаче мы хотим другого. Для чего и создан ленивый квантификатор.
9696

9797
## Ленивый режим
9898

99-
Квантификатор ленивого режима противоположен квантификатору жадного. Это значит: "повторяется минимальное количество раз".
99+
"Ленивый" режим противоположен "жадному". Он означает: "повторять квантификатор наименьшее количество раз".
100100

101101
Мы можем включить его, вставив знак вопроса `pattern:'?'` после квантификатора, получая `pattern:*?` или `pattern:+?` или даже `pattern:??` для `pattern:'?'`.
102102

@@ -166,7 +166,7 @@ alert( "123 456".match(/\d+ \d+?/g) ); // 123 4
166166
167167
Но нам не нужно этого знать для понимания того, как пишутся и работают регулярные выражения. Оптимизация -- это внутренний процесс, мы его не увидим.
168168
169-
Сложные регулярные выражения трудно оптимизировать, так что поиск может работать в точности так, как было описано.
169+
Сложные регулярные выражения трудно оптимизировать, так что поиск может работать и в точности так, как было описано.
170170
```
171171

172172
## Альтернативный подход
@@ -191,9 +191,9 @@ alert( str.match(reg) ); // witch, broom
191191

192192
Просто она работает по-другому. Временами на нужен первый вариант, временами -- второй.
193193

194-
**Давайте посмотрим пример, в котором ленивый квантификатор не может справиться, а второй вариант работает правильно.**
194+
**Давайте посмотрим пример, в котором ленивый квантификатор не справляется, а этот вариант работает правильно.**
195195

196-
Например, мы хотим найти ссылки вида `<a href="..." class="doc">`, у которых есть `href`.
196+
Например, мы хотим найти ссылки вида `<a href="..." class="doc">`, с произвольным `href`.
197197

198198
Какое регулярное выражение нам нужно использовать?
199199

@@ -254,7 +254,7 @@ let reg = /<a href=".*?" class="doc">/g;
254254
alert( str.match(reg) ); // <a href="link1" class="wrong">... <p style="" class="doc">
255255
```
256256

257-
Теперь оно не справилось. В совпадении находится не только ссылка, но и текст после неё, включая `<p...>`.
257+
Ну вот, ленивый квантификатор нас подвёл. В совпадении находится не только ссылка, но и текст после неё, включая `<p...>`.
258258

259259
Почему?
260260

0 commit comments

Comments
 (0)