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 a824409f90..8d32c7883e 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,9 @@ -The regexp for an integer number is `pattern:\d+`. +整数的正则表达式是 `pattern:\d+` 。 -We can exclude negatives by prepending it with the negative lookahead: `pattern:(?` 标签后面插入内容,我们必须先找到它。我们可以使用正则表达式模式 `pattern:` 来实现。 -Для того, чтобы вставить после тега ``, нужно вначале его найти. Будем использовать регулярное выражение `pattern:`. +在本题目中,我们不需要修改 `` 标签。我们只需要在它后面添加文本。 -Далее, нам нужно оставить сам тег `` на месте и добавить текст после него. +我们可以这样做: -Это можно сделать вот так: ```js run let str = '......'; -str = str.replace(//, '$&

Hello

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

Hello

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

Hello

... ``` -В строке замены `$&` означает само совпадение, то есть мы заменяем `pattern:` заменяется на самого себя плюс `

Hello

`. +在替换字符串中,`$&` 表示匹配本身,即源文本中与 `pattern:` 相对应的部分。它会被它自身加上 `

Hello

` 替换。 -Альтернативный вариант - использовать ретроспективную проверку: +另一种方法是使用后行断言: ```js run let str = '......'; -str = str.replace(/(?<=)/, `

Hello

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

Hello

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

Hello

... ``` -Такое регулярное выражение на каждой позиции будет проверять, не идёт ли прямо перед ней `pattern:`. Если да - совпадение найдено. Но сам тег `pattern:` в совпадение не входит, он только участвует в проверке. А других символов после проверки в нём нет, так что текст совпадения будет пустым. +正如你所看到的,这个正则表达式中只有后行断言部分。 -Происходит замена "пустой строки", перед которой идёт `pattern:` на `

Hello

`. Что, как раз, и есть вставка этой строки после ``. +它的工作原理如下: +- 在文本的每个位置。 +- 检查它前面是否有 `pattern:`。 +- 如果有,就匹配该位置。 -P.S. Этому регулярному выражению не помешают флаги: `pattern://si`, чтобы в "точку" входил перевод строки (тег может занимать несколько строк), а также чтобы теги в другом регистре типа `match:` тоже находились. +标签 `pattern:` 不会被作为结果返回。这个正则表达式的结果实际上是一个空字符串,但它只匹配前面紧挨着 `pattern:` 的位置。 + +因此,它将紧挨着 `pattern:` 的“空位置”替换为了 `

Hello

`。这样就在 `` 之后插入了内容。 + +P.S. 正则表达式中修饰符(flag)例如 `pattern:s` 和 `pattern:i` 也很有用:`pattern://si`。这里修饰符(flag)`pattern:s` 使得 `.` 可以匹配换行符,而修饰符 `pattern:i` 使 `pattern:` 大小写不敏感,可以匹配 `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 ac9e5e4cee..ee7b6622f6 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 @@ -# Вставьте после фрагмента +# 在标签头后插入 -Есть строка с HTML-документом. +我们有一个带有 HTML 文档的字符串。 -Вставьте после тега `` (у него могут быть атрибуты) строку `

Hello

`. +编写一个正则表达式,在 `` 标签之后立即插入 `

Hello

`。标签可能具有特性(attribute)。 -Например: +例如: ```js -let regexp = /ваше регулярное выражение/; +let regexp = /你的正则表达式/; let str = ` @@ -20,7 +20,7 @@ let str = ` str = str.replace(regexp, `

Hello

`); ``` -После этого значение `str`: +之后,`str` 的值应该为: ```html

Hello