Skip to content

Commit 6f8f1dd

Browse files
ca11adolex111
andauthored
Apply suggestions from code review
Co-Authored-By: Alexey Pyltsyn <lex61rus@gmail.com>
1 parent dddfb21 commit 6f8f1dd

1 file changed

Lines changed: 7 additions & 7 deletions

File tree

  • 9-regular-expressions/08-regexp-greedy-and-lazy

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
2626

2727
...Как мы видим, регулярное выражение работает не как задумано!
2828

29-
Вместо того, чтобы найти два совпадения `match:"width"` и `match:"broom"`, было найдено одно:`match:"witch" and her "broom"`.
29+
Вместо того, чтобы найти два совпадения `match:"witch"` и `match:"broom"`, было найдено одно:`match:"witch" and her "broom"`.
3030

3131
Это можно описать, как "жадность -- причина всех зол".
3232

@@ -56,7 +56,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
5656

5757
3. Затем точка повторяется из-за квантификатора `pattern:.+`. Движок регулярного выражения строит совпадение, принимая символы один за другим, пока это возможно.
5858

59-
...До каких пор? Точке соответствуют любые символы, так что движок остановится только тогда, когда достигнет конца строки:
59+
...До каких пор? Точке соответствуют любые символы, так что движок остановится только тогда, когда достигнет конца строки:
6060

6161
![](witch_greedy3.png)
6262

@@ -84,7 +84,7 @@ alert( str.match(reg) ); // "witch" and her "broom"
8484

8585
7. Совпадение найдено.
8686

87-
8. Так что первое совпадение: `match:"witch" and her "boom"`. Дальнейший поиск продолжается с того места, где закончился предыдущий. В оставшейся строке `subject:is one` нет кавычек, так что совпадений больше нет.
87+
8. Так что первое совпадение: `match:"witch" and her "broom"`. Дальнейший поиск продолжается с того места, где закончился предыдущий. В оставшейся строке `subject:is one` нет кавычек, так что совпадений больше нет.
8888

8989
Это определённо не то, что мы ожидали. Но так оно работает.
9090

@@ -183,7 +183,7 @@ let str = 'a "witch" and her "broom" is one';
183183
alert( str.match(reg) ); // witch, broom
184184
```
185185

186-
Регулярное выражение `pattern:"[^"]+"` получит нужный результат, потому что оно ищет кавычку `pattern:'"'`, за которой следует один или несколько символов "не-кавычек" `pattern:[^"]`, а затем -- закрывающая кавычка.
186+
Регулярное выражение `pattern:"[^"]+"` получит нужный результат, потому что оно ищет кавычку `pattern:'"'`, за которой следует один или несколько символов не кавычек `pattern:[^"]`, а затем -- закрывающая кавычка.
187187

188188
Движок регулярного выражения заканчивает поиск `pattern:[^"]`, когда встречает закрывающую кавычку.
189189

@@ -208,7 +208,7 @@ let reg = /<a href=".*" class="doc">/g;
208208
alert( str.match(reg) ); // <a href="link" class="doc">
209209
```
210210

211-
Регулярное выражение работает. Но, давайте посмотрим, что произойдёт, если в тексте будет много ссылок?
211+
Регулярное выражение работает. Но давайте посмотрим, что произойдёт, если в тексте будет много ссылок?
212212

213213
```js run
214214
let str = '...<a href="link1" class="doc">... <a href="link2" class="doc">...';
@@ -237,7 +237,7 @@ let reg = /<a href=".*?" class="doc">/g;
237237
alert( str.match(reg) ); // <a href="link1" class="doc">, <a href="link2" class="doc">
238238
```
239239

240-
Теперь, кажется, что всё работает правильно. У нас есть два совпадения:
240+
Теперь кажется, что всё работает правильно. У нас есть два совпадения:
241241

242242
```html
243243
<a href="....." class="doc"> <a href="....." class="doc">
@@ -277,7 +277,7 @@ alert( str.match(reg) ); // <a href="link1" class="wrong">... <p style="" class=
277277

278278
Нам нужен шаблон для поиска `<a href="...something..." class="doc">`, но и с ленивым и с жадным режимами есть проблема.
279279

280-
Правильным вариантом может стать: `pattern:href="[^"]*"`. Он найдёт все символы внутри аттрибута `href` до ближайшей следующей кавычки, как раз то, что нам нужно.
280+
Правильным вариантом может стать: `pattern:href="[^"]*"`. Он найдёт все символы внутри атрибута `href` до ближайшей следующей кавычки, как раз то, что нам нужно.
281281

282282
Работающий пример:
283283

0 commit comments

Comments
 (0)