From 5b4e7c887a5e11c159eea8a5cbef6bb461de087a Mon Sep 17 00:00:00 2001 From: vitaliimalynka Date: Sun, 27 Nov 2022 21:08:56 +0200 Subject: [PATCH 1/7] Word boundary: \b --- .../1-find-time-hh-mm/solution.md | 4 +- .../1-find-time-hh-mm/task.md | 10 ++--- .../06-regexp-boundary/article.md | 38 +++++++++---------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md index 829eda13e..3cb5921b5 100644 --- a/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md +++ b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/solution.md @@ -1,6 +1,6 @@ -The answer: `pattern:\b\d\d:\d\d\b`. +Відповідь: `pattern:\b\d\d:\d\d\b`. ```js run -alert( "Breakfast at 09:00 in the room 123:456.".match( /\b\d\d:\d\d\b/ ) ); // 09:00 +alert( "Сніданок о 09:00 в кімнаті 123:456.".match( /\b\d\d:\d\d\b/ ) ); // 09:00 ``` diff --git a/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md index 95ab5777d..706210cdc 100644 --- a/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md +++ b/9-regular-expressions/06-regexp-boundary/1-find-time-hh-mm/task.md @@ -1,9 +1,9 @@ -# Find the time +# Знайдіть час -The time has a format: `hours:minutes`. Both hours and minutes has two digits, like `09:00`. +Час відповідає формату: `години:хвилини`. І години, і хвилини мають по дві цифри, наприклад, `09:00`. -Make a regexp to find time in the string: `subject:Breakfast at 09:00 in the room 123:456.` +Створіть регулярний вираз для пошуку часу у рядку : `subject:Сніданок о 09:00 в кімнаті 123:456.` -P.S. In this task there's no need to check time correctness yet, so `25:99` can also be a valid result. +P.S. У цьому випадку немає потреби перевіряти правильність часу, тому `25:99` також може бути правильним результатом пошуку. -P.P.S. The regexp shouldn't match `123:456`. +P.P.S. Регулярний вираз не повинен знаходити `123:456`. diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 06b5ac9f7..6a5c04f88 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -1,33 +1,33 @@ -# Word boundary: \b +# Межа слова: \b -A word boundary `pattern:\b` is a test, just like `pattern:^` and `pattern:$`. +Межа слова `pattern:\b` - це така ж сама перевірка як і `pattern:^` та `pattern:$`. -When the regexp engine (program module that implements searching for regexps) comes across `pattern:\b`, it checks that the position in the string is a word boundary. +Коли механізм регулярних виразів (програмний модуль, який здійснює пошук регулярних виразів) стикається з `pattern:\b`, він перевіряє, чи є позиція в рядку межею слова. -There are three different positions that qualify as word boundaries: +Є три різні позиції, які кваліфікуються як межі слова: -- At string start, if the first string character is a word character `pattern:\w`. -- Between two characters in the string, where one is a word character `pattern:\w` and the other is not. -- At string end, if the last string character is a word character `pattern:\w`. +- На початку рядка, якщо його перший символ представляє собою буквенний символ `pattern:\w`. +- Між двома символами в рядку, де один є буквенним символом `pattern:\w`, а інший - ні. +- В кінці рядка, якщо його останній символ представляє собою буквенний символ `pattern:\w`. -For instance, regexp `pattern:\bJava\b` will be found in `subject:Hello, Java!`, where `subject:Java` is a standalone word, but not in `subject:Hello, JavaScript!`. +Наприклад, регулярний вираз `pattern:\bJava\b` буде знайдено в `subject:Hello, Java!`, де `subject:Java` - окреме слово, але не буде знайдено в `subject:Hello, JavaScript!`. ```js run alert( "Hello, Java!".match(/\bJava\b/) ); // Java alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null ``` -In the string `subject:Hello, Java!` following positions correspond to `pattern:\b`: +У рядку `subject:Hello, Java!` наступні позиції будуть відповідати межам слова `pattern:\b`: ![](hello-java-boundaries.svg) -So, it matches the pattern `pattern:\bHello\b`, because: +Виходить, що воно відповідає шаблону `pattern:\bHello\b` за наступними критеріями: -1. At the beginning of the string matches the first test `pattern:\b`. -2. Then matches the word `pattern:Hello`. -3. Then the test `pattern:\b` matches again, as we're between `subject:o` and a comma. +1. На початку рядка відповідає першій перевірці `pattern:\b`. +2. Потім відповідає цілому слову `pattern:Hello`. +3. І, накінець, перевірка `pattern:\b` також збігається, оскільки ми знаходемось між символом `subject:o` і комою. -So the pattern `pattern:\bHello\b` would match, but not `pattern:\bHell\b` (because there's no word boundary after `l`) and not `Java!\b` (because the exclamation sign is not a wordly character `pattern:\w`, so there's no word boundary after it). +Отже, шаблон `pattern:\bHello\b` буде збігатися, при цьому, `pattern:\bHell\b` - ні (оскільки немає закінчення слова після символу `l`), а також не буде збігатися `pattern:Java!\b` (оскільки знак оклику не буквенний символ `pattern:\w`, тому після нього немає й межі слова). ```js run alert( "Hello, Java!".match(/\bHello\b/) ); // Hello @@ -36,17 +36,17 @@ alert( "Hello, Java!".match(/\bHell\b/) ); // null (no match) alert( "Hello, Java!".match(/\bJava!\b/) ); // null (no match) ``` -We can use `pattern:\b` not only with words, but with digits as well. +Ми можемо використовувати `pattern:\b` не тільки зі словами, а й з цифрами. -For example, the pattern `pattern:\b\d\d\b` looks for standalone 2-digit numbers. In other words, it looks for 2-digit numbers that are surrounded by characters different from `pattern:\w`, such as spaces or punctuation (or text start/end). +Наприклад, шаблон `pattern:\b\d\d\b` шукає окремі двозначні числа. Іншими словами, він шукає двозначні числа, які оточені символами, відмінними від буквенних `pattern:\w`, такі як пробіли чи знаки пунктуації (чи початок/кінець тексту). ```js run alert( "1 23 456 78".match(/\b\d\d\b/g) ); // 23,78 alert( "12,34,56".match(/\b\d\d\b/g) ); // 12,34,56 ``` -```warn header="Word boundary `pattern:\b` doesn't work for non-latin alphabets" -The word boundary test `pattern:\b` checks that there should be `pattern:\w` on the one side from the position and "not `pattern:\w`" - on the other side. +```warn header="Межа слова `pattern:\b` не працює з алфавітами, відмінними від латинського" +Перевірка межі слова `pattern:\b` звіряє чи є `pattern:\w` з однієї сторони і "не `pattern:\w`" - з іншої. -But `pattern:\w` means a latin letter `a-z` (or a digit or an underscore), so the test doesn't work for other characters, e.g. cyrillic letters or hieroglyphs. +Але `pattern:\w` позначає латинську літеру `a-z` (або цифру чи нижнє підкреслення), тому перевірка не працює для інших символів, наприклад, кирилиці чи ієрогліфів. ``` From 9e9afbc26de22b7f4e7c06e8e984cb967bf31eef Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:01:15 +0200 Subject: [PATCH 2/7] Update 9-regular-expressions/06-regexp-boundary/article.md Co-authored-by: Stanislav --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 6a5c04f88..1b5aad6d3 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -1,6 +1,6 @@ # Межа слова: \b -Межа слова `pattern:\b` - це така ж сама перевірка як і `pattern:^` та `pattern:$`. +Межа слова `pattern:\b` -- це така ж сама перевірка як і `pattern:^` та `pattern:$`. Коли механізм регулярних виразів (програмний модуль, який здійснює пошук регулярних виразів) стикається з `pattern:\b`, він перевіряє, чи є позиція в рядку межею слова. From 06b9d9ebe7903254ecabc7d71f01658b9b232ad7 Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:03:11 +0200 Subject: [PATCH 3/7] Update 9-regular-expressions/06-regexp-boundary/article.md Co-authored-by: Stanislav --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 1b5aad6d3..1244cfce6 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -7,7 +7,7 @@ Є три різні позиції, які кваліфікуються як межі слова: - На початку рядка, якщо його перший символ представляє собою буквенний символ `pattern:\w`. -- Між двома символами в рядку, де один є буквенним символом `pattern:\w`, а інший - ні. +- Між двома символами в рядку, де один є буквенним символом `pattern:\w`, а інший -- ні. - В кінці рядка, якщо його останній символ представляє собою буквенний символ `pattern:\w`. Наприклад, регулярний вираз `pattern:\bJava\b` буде знайдено в `subject:Hello, Java!`, де `subject:Java` - окреме слово, але не буде знайдено в `subject:Hello, JavaScript!`. From 2d757487e9c76265d9f3fcde11a4a2be30474977 Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:03:26 +0200 Subject: [PATCH 4/7] Update 9-regular-expressions/06-regexp-boundary/article.md Co-authored-by: Stanislav --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 1244cfce6..eb3259a69 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -10,7 +10,7 @@ - Між двома символами в рядку, де один є буквенним символом `pattern:\w`, а інший -- ні. - В кінці рядка, якщо його останній символ представляє собою буквенний символ `pattern:\w`. -Наприклад, регулярний вираз `pattern:\bJava\b` буде знайдено в `subject:Hello, Java!`, де `subject:Java` - окреме слово, але не буде знайдено в `subject:Hello, JavaScript!`. +Наприклад, регулярний вираз `pattern:\bJava\b` буде знайдено в `subject:Hello, Java!`, де `subject:Java` -- окреме слово, але не буде знайдено в `subject:Hello, JavaScript!`. ```js run alert( "Hello, Java!".match(/\bJava\b/) ); // Java From cb4addcf20945f1d2e6a0fca487a784462b8cb12 Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:05:53 +0200 Subject: [PATCH 5/7] Update 9-regular-expressions/06-regexp-boundary/article.md Co-authored-by: Stanislav --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index eb3259a69..18b67a859 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -27,7 +27,7 @@ alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null 2. Потім відповідає цілому слову `pattern:Hello`. 3. І, накінець, перевірка `pattern:\b` також збігається, оскільки ми знаходемось між символом `subject:o` і комою. -Отже, шаблон `pattern:\bHello\b` буде збігатися, при цьому, `pattern:\bHell\b` - ні (оскільки немає закінчення слова після символу `l`), а також не буде збігатися `pattern:Java!\b` (оскільки знак оклику не буквенний символ `pattern:\w`, тому після нього немає й межі слова). +Отже, шаблон `pattern:\bHello\b` буде збігатися, при цьому, `pattern:\bHell\b` -- ні (оскільки немає закінчення слова після символу `l`), а також не буде збігатися `pattern:Java!\b` (оскільки знак оклику не буквенний символ `pattern:\w`, тому після нього немає й межі слова). ```js run alert( "Hello, Java!".match(/\bHello\b/) ); // Hello From dce2efdfeaa32e0240e9b6b347ee7d9ba93dae66 Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:07:22 +0200 Subject: [PATCH 6/7] Update 9-regular-expressions/06-regexp-boundary/article.md Co-authored-by: Stanislav --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 18b67a859..900aba2bc 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -25,7 +25,7 @@ alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null 1. На початку рядка відповідає першій перевірці `pattern:\b`. 2. Потім відповідає цілому слову `pattern:Hello`. -3. І, накінець, перевірка `pattern:\b` також збігається, оскільки ми знаходемось між символом `subject:o` і комою. +3. І урешті-решт перевірка `pattern:\b` також збігається, оскільки ми знаходемось між символом `subject:o` і комою. Отже, шаблон `pattern:\bHello\b` буде збігатися, при цьому, `pattern:\bHell\b` -- ні (оскільки немає закінчення слова після символу `l`), а також не буде збігатися `pattern:Java!\b` (оскільки знак оклику не буквенний символ `pattern:\w`, тому після нього немає й межі слова). From 3c84a1794e61ddced6785f14840b8b9aeb759577 Mon Sep 17 00:00:00 2001 From: Vitalii Malynka Date: Sun, 11 Dec 2022 18:24:12 +0200 Subject: [PATCH 7/7] fixed bug, added commas and cuteness of the word --- 9-regular-expressions/06-regexp-boundary/article.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/9-regular-expressions/06-regexp-boundary/article.md b/9-regular-expressions/06-regexp-boundary/article.md index 900aba2bc..587cf2e9e 100644 --- a/9-regular-expressions/06-regexp-boundary/article.md +++ b/9-regular-expressions/06-regexp-boundary/article.md @@ -25,7 +25,7 @@ alert( "Hello, JavaScript!".match(/\bJava\b/) ); // null 1. На початку рядка відповідає першій перевірці `pattern:\b`. 2. Потім відповідає цілому слову `pattern:Hello`. -3. І урешті-решт перевірка `pattern:\b` також збігається, оскільки ми знаходемось між символом `subject:o` і комою. +3. І, врешті-решт, перевірка `pattern:\b` також збігається, оскільки ми знаходимось між символом `subject:o` і комою. Отже, шаблон `pattern:\bHello\b` буде збігатися, при цьому, `pattern:\bHell\b` -- ні (оскільки немає закінчення слова після символу `l`), а також не буде збігатися `pattern:Java!\b` (оскільки знак оклику не буквенний символ `pattern:\w`, тому після нього немає й межі слова).