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
@@ -26,7 +26,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
26
26
27
27
...Как мы видим, регулярное выражение работает не как задумано!
28
28
29
-
Вместо того, чтобы найти два совпадения `match:"width"` и `match:"broom"`, было найдено одно:`match:"witch" and her "broom"`.
29
+
Вместо того, чтобы найти два совпадения `match:"witch"` и `match:"broom"`, было найдено одно:`match:"witch" and her "broom"`.
30
30
31
31
Это можно описать, как "жадность -- причина всех зол".
32
32
@@ -56,7 +56,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
56
56
57
57
3. Затем точка повторяется из-за квантификатора `pattern:.+`. Движок регулярного выражения строит совпадение, принимая символы один за другим, пока это возможно.
58
58
59
-
...До каких пор? Точке соответствуют любые символы, так что движок остановится только тогда, когда достигнет конца строки:
59
+
...До каких пор? Точке соответствуют любые символы, так что движок остановится только тогда, когда достигнет конца строки:
60
60
61
61

62
62
@@ -84,7 +84,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
84
84
85
85
7. Совпадение найдено.
86
86
87
-
8. Так что первое совпадение: `match:"witch" and her "boom"`. Дальнейший поиск продолжается с того места, где закончился предыдущий. В оставшейся строке `subject:is one` нет кавычек, так что совпадений больше нет.
87
+
8. Так что первое совпадение: `match:"witch" and her "broom"`. Дальнейший поиск продолжается с того места, где закончился предыдущий. В оставшейся строке `subject:is one` нет кавычек, так что совпадений больше нет.
88
88
89
89
Это определённо не то, что мы ожидали. Но так оно работает.
90
90
@@ -183,7 +183,7 @@ let str = 'a "witch" and her "broom" is one';
183
183
alert( str.match(reg) ); // witch, broom
184
184
```
185
185
186
-
Регулярное выражение `pattern:"[^"]+"` получит нужный результат, потому что оно ищет кавычку `pattern:'"'`, за которой следует один или несколько символов "не-кавычек"`pattern:[^"]`, а затем -- закрывающая кавычка.
186
+
Регулярное выражение `pattern:"[^"]+"` получит нужный результат, потому что оно ищет кавычку `pattern:'"'`, за которой следует один или несколько символов не кавычек `pattern:[^"]`, а затем -- закрывающая кавычка.
187
187
188
188
Движок регулярного выражения заканчивает поиск `pattern:[^"]`, когда встречает закрывающую кавычку.
189
189
@@ -208,7 +208,7 @@ let reg = /<a href=".*" class="doc">/g;
Нам нужен шаблон для поиска `<a href="...something..." class="doc">`, но и с ленивым и с жадным режимами есть проблема.
279
279
280
-
Правильным вариантом может стать: `pattern:href="[^"]*"`. Он найдёт все символы внутри аттрибута`href` до ближайшей следующей кавычки, как раз то, что нам нужно.
280
+
Правильным вариантом может стать: `pattern:href="[^"]*"`. Он найдёт все символы внутри атрибута`href` до ближайшей следующей кавычки, как раз то, что нам нужно.
0 commit comments