From fd901d25a678f0e3b6aaae8f6034469b9b8820d9 Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 18:53:38 +0200 Subject: [PATCH 01/11] Update article.md --- .../14-regexp-lookahead-lookbehind/article.md | 124 +++++++++--------- 1 file changed, 62 insertions(+), 62 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index cee8215f9..e6c7f197f 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,134 +1,134 @@ -# Lookahead and lookbehind +# Перегляд уперед та назад -Sometimes we need to find only those matches for a pattern that are followed or preceded by another pattern. +Іноді, нам потрібно знайти тільки такі співпадіння з шаблоном, за якими слідує, або яким передує інший шаблон. -There's a special syntax for that, called "lookahead" and "lookbehind", together referred to as "lookaround". +Для цього існують спеціальні синтаксичні конструкції, котрі називається "перегляд уперед" та "перегляд назад". -For the start, let's find the price from the string like `subject:1 turkey costs 30€`. That is: a number, followed by `subject:€` sign. +Для початку, давайте знайдемо ціну у рядку `subject:1 індичка коштує 30€`. Маємо: число, за яким йде символ `subject:€`. -## Lookahead +## Перегляд уперед -The syntax is: `pattern:X(?=Y)`, it means "look for `pattern:X`, but match only if followed by `pattern:Y`". There may be any pattern instead of `pattern:X` and `pattern:Y`. +Синтаксис виглядає наступнм чином: `pattern:X(?=Y)`, це означає "шукай `pattern:X`, але вважай його співпадінням, тільки якщо за ним слідує `pattern:Y`". Замість `pattern:X` та `pattern:Y` можуть бути будь-які інші шаблони. -For an integer number followed by `subject:€`, the regexp will be `pattern:\d+(?=€)`: +Для цілого числа, за яким слідує `subject:€`, регулярний вираз виглядатиме наступним чином `pattern:\d+(?=€)`: ```js run -let str = "1 turkey costs 30€"; +let str = "1 індичка коштує 30€"; -alert( str.match(/\d+(?=€)/) ); // 30, the number 1 is ignored, as it's not followed by € +alert( str.match(/\d+(?=€)/) ); // 30, число 1 ігнорується, оскільки після нього не стоїть символ € ``` -Please note: the lookahead is merely a test, the contents of the parentheses `pattern:(?=...)` is not included in the result `match:30`. +Зверніть увагу: Перегляд уперед це свого роду тест, вміст в дужках `pattern:(?=...)` не входить до відображуваного регулярним виразом співпадіння `match:30`. -When we look for `pattern:X(?=Y)`, the regular expression engine finds `pattern:X` and then checks if there's `pattern:Y` immediately after it. If it's not so, then the potential match is skipped, and the search continues. +Коли ми шукаємо `pattern:X(?=Y)`, регулярний вираз знаходить `pattern:X` і далі перевіряє наявність `pattern:Y` одразу після нього. Якщо це не так, тоді потенційне співпадіння пропускається і регулярний вираз продовжує пошук. -More complex tests are possible, e.g. `pattern:X(?=Y)(?=Z)` means: +Можливі і більш складні тести, наприклад `pattern:X(?=Y)(?=Z)` означає: -1. Find `pattern:X`. -2. Check if `pattern:Y` is immediately after `pattern:X` (skip if isn't). -3. Check if `pattern:Z` is also immediately after `pattern:X` (skip if isn't). -4. If both tests passed, then the `pattern:X` is a match, otherwise continue searching. +1. Знайди `pattern:X`. +2. Перевір, чи `pattern:Y` йде одразу після `pattern:X` (пропускай, якщо це не так). +3. Перевір, чи `pattern:Z` також йде одразу пысля `pattern:X` (пропускай, якщо це не так). +4. Якщо обидва тести пройдено, тоді `pattern:X` відповідає умовам пошуку, в інщому випадку - продовжуй пошук. -In other words, such pattern means that we're looking for `pattern:X` followed by `pattern:Y` and `pattern:Z` at the same time. +Інакше кажучи, такий шаблон означає, що ми шукаємо на `pattern:X` за яким одночасно слідують `pattern:Y` та `pattern:Z`. -That's only possible if patterns `pattern:Y` and `pattern:Z` aren't mutually exclusive. +Це можливо тільки за умови, якщо шаблон `pattern:Y` та `pattern:Z` не взаємовиключні. -For example, `pattern:\d+(?=\s)(?=.*30)` looks for `pattern:\d+` that is followed by a space `pattern:(?=\s)`, and there's `30` somewhere after it `pattern:(?=.*30)`: +До прикладу, `pattern:\d+(?=\s)(?=.*30)` шукає на `pattern:\d+` за яким йде пробільний символ `pattern:(?=\s)`, а також `30` десь після нього `pattern:(?=.*30)`: ```js run -let str = "1 turkey costs 30€"; +let str = "1 індичка коштує 30€"; alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 ``` -In our string that exactly matches the number `1`. +В нашому рядку цим параметрам повністю відповідає число `1`. -## Negative lookahead +## Негативний перегляд уперед -Let's say that we want a quantity instead, not a price from the same string. That's a number `pattern:\d+`, NOT followed by `subject:€`. +Скажімо, ми хочем знайти кількість, а не ціну в тому самому рядку. Тобто, шукаємо число `pattern:\d+`, за якийм НЕ слідує `subject:€`. -For that, a negative lookahead can be applied. +В такому випадку, доречним буде використання негативного перегляду уперед. -The syntax is: `pattern:X(?!Y)`, it means "search `pattern:X`, but only if not followed by `pattern:Y`". +Синатксис виглядає наступним чином: `pattern:X(?!Y)`, і означає "шукай `pattern:X`, але за умови, що після нього не йде `pattern:Y`". ```js run -let str = "2 turkeys cost 60€"; +let str = "2 індички коштують 60€"; -alert( str.match(/\d+\b(?!€)/g) ); // 2 (the price is not matched) +alert( str.match(/\d+\b(?!€)/g) ); // 2 (ціна не відповідає вимогам шаблону і не відображається в результаті) ``` -## Lookbehind +## Перегляд назад -```warn header="Lookbehind browser compatibility" -Please Note: Lookbehind is not supported in non-V8 browsers, such as Safari, Internet Explorer. +```warn header="Сумісність браузерів з переглядом назад" +Зверніть увагу: Перегляд назад не підтримується в браузерах з відміннимим від V8 двигунами, зокрема Safari, Internet Explorer. ``` -Lookahead allows to add a condition for "what follows". +Перегляд уперед дозволяє додати умову на кшталт "те, що слідує після". -Lookbehind is similar, but it looks behind. That is, it allows to match a pattern only if there's something before it. +Перегляд назад подібний, але дивиться у зворотньому напрямку. Таким чином, він виводить результат, тільки якщо співпадає і шаблон і те, що йде до нього. -The syntax is: -- Positive lookbehind: `pattern:(?<=Y)X`, matches `pattern:X`, but only if there's `pattern:Y` before it. -- Negative lookbehind: `pattern:(? Date: Fri, 6 Jan 2023 18:59:14 +0200 Subject: [PATCH 02/11] Update solution.md --- .../1-find-non-negative-integers/solution.md | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md index ebc12689d..b7e4eb40d 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -1,9 +1,8 @@ +Регулярний вираз для цілого числа `pattern:\d+`. -The regexp for an integer number is `pattern:\d+`. +Ми можемо виключити від'ємні числа попередньо написавши регулярний вираз для негативного перегляду назад: `pattern:(? Date: Fri, 6 Jan 2023 19:01:11 +0200 Subject: [PATCH 03/11] Update task.md --- .../1-find-non-negative-integers/task.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md index cd58f9923..85ec5c752 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md @@ -1,12 +1,12 @@ -# Find non-negative integers +# Знайдіть цілі невід'ємні числа -There's a string of integer numbers. +Дано рядок з цілих чисел. -Create a regexp that looks for only non-negative ones (zero is allowed). +Напишіть регулярний вираз, який знаходить тільки цілі невід'ємні числа (нуль допускається). -An example of use: +Приклад використання: ```js -let regexp = /your regexp/g; +let regexp = /ваш регулярний вираз/g; let str = "0 12 -5 123 -18"; From b72a0225e486b129c44551f71a7bb0e14f43a656 Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:01:33 +0200 Subject: [PATCH 04/11] Update solution.md --- .../1-find-non-negative-integers/solution.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md index b7e4eb40d..fe67ab4aa 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -2,7 +2,7 @@ Ми можемо виключити від'ємні числа попередньо написавши регулярний вираз для негативного перегляду назад: `pattern:(? Date: Fri, 6 Jan 2023 19:04:06 +0200 Subject: [PATCH 05/11] Update task.md --- .../2-insert-after-head/task.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md index be1a259f6..8e2ab6b47 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md @@ -1,13 +1,13 @@ -# Insert After Head +# Додайте після тегу Head -We have a string with an HTML Document. +У нас є рядок з HTML-документом. -Write a regular expression that inserts `

Hello

` immediately after `` tag. The tag may have attributes. +Напишіть регулярний вираз який вставляє `

Привіт

` одразу після тегу ``. Тег може мати атрибути. -For instance: +Приклад: ```js -let regexp = /your regular expression/; +let regexp = /ваш регулярний вираз/; let str = ` @@ -17,13 +17,13 @@ let str = ` `; -str = str.replace(regexp, `

Hello

`); +str = str.replace(regexp, `

Привіт

`); ``` -After that the value of `str` should be: +Після цього значення `str` має бути: ```html -

Hello

+

Привіт

... From f8102837f04b77c812a006bd881d6972b85e8943 Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:08:44 +0200 Subject: [PATCH 06/11] Update solution.md --- .../2-insert-after-head/solution.md | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md index b1d377d33..940a2296e 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md @@ -1,28 +1,28 @@ -In order to insert after the `` tag, we must first find it. We can use the regular expression pattern `pattern:` for that. +Щоб додати інформацію після тегу `` , нам потрібно спершу його знайти. Ми можемо використати для цього шаблон регулярного виразу `pattern:`. -In this task we don't need to modify the `` tag. We only need to add the text after it. +в цьому завданні нам не потрібно змінювати тег ``. Нам потрібно тільки додати текст після нього. -Here's how we can do it: +Ось таким чином ми можемо це зробити: ```js run let str = '......'; -str = str.replace(//, '$&

Hello

'); +str = str.replace(//, '$&

Привіт

'); -alert(str); // ...

Hello

... +alert(str); // ...

Привіт

... ``` -In the replacement string `$&` means the match itself, that is, the part of the source text that corresponds to `pattern:`. It gets replaced by itself plus `

Hello

`. +в заміненому рядку `$&` означає співпадіння саме по собі, тобто, частина вихідного тексту яка відповідає шаблону `pattern:`. Її замінено на неї ж плюс `

Привіт

`. -An alternative is to use lookbehind: +Альнернативою було би використання перегляду назад: ```js run let str = '......'; -str = str.replace(/(?<=)/, `

Hello

`); +str = str.replace(/(?<=)/, `

Привіт

`); -alert(str); // ...

Hello

... +alert(str); // ...

привіт

... ``` -As you can see, there's only lookbehind part in this regexp. +Як бачите, є тільки перегляд назад у цьому регулярному виразі. It works like this: - At every position in the text. From 1cbe619629189f753a79cc6edca01b665517a42e Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:13:23 +0200 Subject: [PATCH 07/11] Update task.md --- .../1-find-non-negative-integers/task.md | 1 + 1 file changed, 1 insertion(+) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md index 85ec5c752..1b0cc33ce 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md @@ -1,3 +1,4 @@ + # Знайдіть цілі невід'ємні числа Дано рядок з цілих чисел. From 0587094711b2b17d659663731bdc7a927b4d953c Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:13:59 +0200 Subject: [PATCH 08/11] Update task.md --- .../1-find-non-negative-integers/task.md | 1 - 1 file changed, 1 deletion(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md index 1b0cc33ce..85ec5c752 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/task.md @@ -1,4 +1,3 @@ - # Знайдіть цілі невід'ємні числа Дано рядок з цілих чисел. From 6d90c0ff20d93450f1d9847788aa3e2f71d7d681 Mon Sep 17 00:00:00 2001 From: Mariana Melnychenko <110090508+MrsMelnychenko@users.noreply.github.com> Date: Fri, 6 Jan 2023 19:14:42 +0200 Subject: [PATCH 09/11] Update solution.md --- .../1-find-non-negative-integers/solution.md | 1 + 1 file changed, 1 insertion(+) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md index fe67ab4aa..20ef9543c 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -1,3 +1,4 @@ + Регулярний вираз для цілого числа `pattern:\d+`. Ми можемо виключити від'ємні числа попередньо написавши регулярний вираз для негативного перегляду назад: `pattern:(? Date: Sun, 12 Mar 2023 21:28:37 +0200 Subject: [PATCH 10/11] Apply suggestions from code review --- .../1-find-non-negative-integers/solution.md | 8 +-- .../1-find-non-negative-integers/task.md | 2 +- .../2-insert-after-head/solution.md | 10 +-- .../2-insert-after-head/task.md | 2 +- .../14-regexp-lookahead-lookbehind/article.md | 62 +++++++++---------- 5 files changed, 42 insertions(+), 42 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md index 20ef9543c..1c9408c67 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/1-find-non-negative-integers/solution.md @@ -1,7 +1,7 @@ Регулярний вираз для цілого числа `pattern:\d+`. -Ми можемо виключити від'ємні числа попередньо написавши регулярний вираз для негативного перегляду назад: `pattern:(?` , нам потрібно спершу його знайти. Ми можемо використати для цього шаблон регулярного виразу `pattern:`. +Щоб вставити після тегу `` , нам потрібно спершу його знайти. Ми можемо використати для цього регулярний вираз `pattern:`. в цьому завданні нам не потрібно змінювати тег ``. Нам потрібно тільки додати текст після нього. @@ -13,19 +13,19 @@ alert(str); // ...

Привіт

... в заміненому рядку `$&` означає співпадіння саме по собі, тобто, частина вихідного тексту яка відповідає шаблону `pattern:`. Її замінено на неї ж плюс `

Привіт

`. -Альнернативою було би використання перегляду назад: +Альнернативою було би використання зворотньої перевірки: ```js run let str = '......'; str = str.replace(/(?<=)/, `

Привіт

`); -alert(str); // ...

привіт

... +alert(str); // ...

Привіт

... ``` Як бачите, є тільки перегляд назад у цьому регулярному виразі. -It works like this: -- At every position in the text. +Це працює таким чином: +- На кожній позиції в тексті. - Check if it's preceeded by `pattern:`. - If it's so then we have the match. diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md index 8e2ab6b47..05b42daf7 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/task.md @@ -1,4 +1,4 @@ -# Додайте після тегу Head +# Вставка після Head У нас є рядок з HTML-документом. diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index e6c7f197f..98b8604d2 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -1,12 +1,12 @@ -# Перегляд уперед та назад +# Перевірка уперед та назад Іноді, нам потрібно знайти тільки такі співпадіння з шаблоном, за якими слідує, або яким передує інший шаблон. -Для цього існують спеціальні синтаксичні конструкції, котрі називається "перегляд уперед" та "перегляд назад". +Для цього існують спеціальні синтаксичні конструкції, котрі називається "перевірка уперед" та "перевірка назад". Для початку, давайте знайдемо ціну у рядку `subject:1 індичка коштує 30€`. Маємо: число, за яким йде символ `subject:€`. -## Перегляд уперед +## Перевірка уперед Синтаксис виглядає наступнм чином: `pattern:X(?=Y)`, це означає "шукай `pattern:X`, але вважай його співпадінням, тільки якщо за ним слідує `pattern:Y`". Замість `pattern:X` та `pattern:Y` можуть бути будь-які інші шаблони. @@ -18,7 +18,7 @@ let str = "1 індичка коштує 30€"; alert( str.match(/\d+(?=€)/) ); // 30, число 1 ігнорується, оскільки після нього не стоїть символ € ``` -Зверніть увагу: Перегляд уперед це свого роду тест, вміст в дужках `pattern:(?=...)` не входить до відображуваного регулярним виразом співпадіння `match:30`. +Зверніть увагу: перевірка уперед це свого роду тест, вміст в дужках `pattern:(?=...)` не входить до відображуваного регулярним виразом співпадіння `match:30`. Коли ми шукаємо `pattern:X(?=Y)`, регулярний вираз знаходить `pattern:X` і далі перевіряє наявність `pattern:Y` одразу після нього. Якщо це не так, тоді потенційне співпадіння пропускається і регулярний вираз продовжує пошук. @@ -26,14 +26,14 @@ alert( str.match(/\d+(?=€)/) ); // 30, число 1 ігнорується, о 1. Знайди `pattern:X`. 2. Перевір, чи `pattern:Y` йде одразу після `pattern:X` (пропускай, якщо це не так). -3. Перевір, чи `pattern:Z` також йде одразу пысля `pattern:X` (пропускай, якщо це не так). -4. Якщо обидва тести пройдено, тоді `pattern:X` відповідає умовам пошуку, в інщому випадку - продовжуй пошук. +3. Перевір, чи `pattern:Z` також йде одразу після `pattern:X` (пропускай, якщо це не так). +4. Якщо обидва тести пройдено, тоді `pattern:X` відповідає умовам пошуку, в інщому випадку -- продовжуй пошук. Інакше кажучи, такий шаблон означає, що ми шукаємо на `pattern:X` за яким одночасно слідують `pattern:Y` та `pattern:Z`. -Це можливо тільки за умови, якщо шаблон `pattern:Y` та `pattern:Z` не взаємовиключні. +Це можливо тільки за умови, якщо шаблон `pattern:Y` та `pattern:Z` не виключають один одного. -До прикладу, `pattern:\d+(?=\s)(?=.*30)` шукає на `pattern:\d+` за яким йде пробільний символ `pattern:(?=\s)`, а також `30` десь після нього `pattern:(?=.*30)`: +Наприклад, `pattern:\d+(?=\s)(?=.*30)` шукає на `pattern:\d+` за яким йде пробільний символ `pattern:(?=\s)`, а також `30` десь після нього `pattern:(?=.*30)`: ```js run let str = "1 індичка коштує 30€"; @@ -43,13 +43,13 @@ alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 В нашому рядку цим параметрам повністю відповідає число `1`. -## Негативний перегляд уперед +## Негативна перевірка уперед Скажімо, ми хочем знайти кількість, а не ціну в тому самому рядку. Тобто, шукаємо число `pattern:\d+`, за якийм НЕ слідує `subject:€`. В такому випадку, доречним буде використання негативного перегляду уперед. -Синатксис виглядає наступним чином: `pattern:X(?!Y)`, і означає "шукай `pattern:X`, але за умови, що після нього не йде `pattern:Y`". +Синтаксис виглядає наступним чином: `pattern:X(?!Y)`, і означає "шукай `pattern:X`, але за умови, що після нього не йде `pattern:Y`". ```js run let str = "2 індички коштують 60€"; @@ -57,21 +57,21 @@ let str = "2 індички коштують 60€"; alert( str.match(/\d+\b(?!€)/g) ); // 2 (ціна не відповідає вимогам шаблону і не відображається в результаті) ``` -## Перегляд назад +## Перевірка назад -```warn header="Сумісність браузерів з переглядом назад" -Зверніть увагу: Перегляд назад не підтримується в браузерах з відміннимим від V8 двигунами, зокрема Safari, Internet Explorer. +```warn header="Сумісність браузерів з перевіркою назад" +Зверніть увагу: Перевірка назад не підтримується в браузерах з відміннимим від V8 двигунами, зокрема Safari, Internet Explorer. ``` -Перегляд уперед дозволяє додати умову на кшталт "те, що слідує після". +Перевірка уперед дозволяє додати умову на кшталт "те, що слідує після". -Перегляд назад подібний, але дивиться у зворотньому напрямку. Таким чином, він виводить результат, тільки якщо співпадає і шаблон і те, що йде до нього. +Перевірка назад подібна, але дивиться у зворотньому напрямку. Таким чином, вона видає результат, тільки якщо співпадає і шаблон і те, що йде до нього. Синтаксис наступний: -- Позитивний перегляд назад: `pattern:(?<=Y)X`, співпадає з `pattern:X`, тільки за умови, якщо перед ним є `pattern:Y`. -- Негативний перегляд назад: `pattern:(? Date: Sun, 12 Mar 2023 21:29:21 +0200 Subject: [PATCH 11/11] Apply suggestions from code review --- .../2-insert-after-head/solution.md | 2 +- 9-regular-expressions/14-regexp-lookahead-lookbehind/article.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md index 6e922159d..108d5f78b 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/2-insert-after-head/solution.md @@ -22,7 +22,7 @@ str = str.replace(/(?<=)/, `

Привіт

`); alert(str); // ...

Привіт

... ``` -Як бачите, є тільки перегляд назад у цьому регулярному виразі. +Як бачите, в цьому регулярному виразі є тільки зворотня перевірка. Це працює таким чином: - На кожній позиції в тексті. diff --git a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md index 98b8604d2..d6dd00cfe 100644 --- a/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md +++ b/9-regular-expressions/14-regexp-lookahead-lookbehind/article.md @@ -47,7 +47,7 @@ alert( str.match(/\d+(?=\s)(?=.*30)/) ); // 1 Скажімо, ми хочем знайти кількість, а не ціну в тому самому рядку. Тобто, шукаємо число `pattern:\d+`, за якийм НЕ слідує `subject:€`. -В такому випадку, доречним буде використання негативного перегляду уперед. +В такому випадку, доречним буде використання негативної перевірки уперед. Синтаксис виглядає наступним чином: `pattern:X(?!Y)`, і означає "шукай `pattern:X`, але за умови, що після нього не йде `pattern:Y`".