From ce3b892b187900d10cc091afc75954cb7b6cb832 Mon Sep 17 00:00:00 2001 From: xdsnet Date: Mon, 29 Nov 2021 09:33:28 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E7=BF=BB=E8=AF=919-regular-expressions/14-?= =?UTF-8?q?regexp-lookahead-lookbehind=20=E4=B8=8B=E7=9A=84=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E9=83=A8=E5=88=86=E5=86=85=E5=AE=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-find-non-negative-integers/solution.md | 19 ++++++--------- .../1-find-non-negative-integers/task.md | 14 +++++------ .../2-insert-after-head/solution.md | 24 ++++++++++--------- .../2-insert-after-head/task.md | 14 +++++------ 4 files changed, 32 insertions(+), 39 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 a824409f90..815f6bd8de 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,28 +1,23 @@ +正则中对于一个整数可以简单的表示为 `表达式:\d+`. -The regexp for an integer number is `pattern:\d+`. +我们可以通过在它前面加上否定的前瞻来排除不正确的情况: `表达式:(?`, нужно вначале его найти. Будем использовать регулярное выражение `pattern:`. +为了在``标记之后插入,我们必须首先找到它。我们可以使用正则表达式模式``来实现这一点。 -Далее, нам нужно оставить сам тег `` на месте и добавить текст после него. +在这个任务中,我们不需要修改``标记。我们只需要在它后面添加文本。 -Это можно сделать вот так: +我们可以这样做: ```js run let str = '......'; str = str.replace(//, '$&

Hello

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

Hello

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

Hello

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

Hello

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

Hello

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

Hello

... ``` +正如您所看到的,这个正则表达式中只有后瞻断言部分 -Такое регулярное выражение на каждой позиции будет проверять, не идёт ли прямо перед ней `pattern:`. Если да - совпадение найдено. Но сам тег `pattern:` в совпадение не входит, он только участвует в проверке. А других символов после проверки в нём нет, так что текст совпадения будет пустым. +它的工作原理如下: +* 在文本中的每个位置。 +* 检查它之前是否有。 +* 如果存在,就匹配该位置。 -Происходит замена "пустой строки", перед которой идёт `pattern:` на `

Hello

`. Что, как раз, и есть вставка этой строки после ``. +这个标签 ``在这里并没有作为捕获返回,实际上它匹配到了一个在``后的空字符串(位置)。 +因此,它将紧接``的“空行”替换为`

Hello

`。这样就在``之后插入了内容。 -P.S. Этому регулярному выражению не помешают флаги: `pattern://si`, чтобы в "точку" входил перевод строки (тег может занимать несколько строк), а также чтобы теги в другом регистре типа `match:` тоже находились. +P.S. 正则式中单标记如`s` 和 `i` 也经常被使用,如: `//si`. 这里 `s`标记使得 `.`可以匹配换行符,而`i` 标记表示大小写不敏感,即 `` 和 ``都可以被匹配。 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..bafa3ba7ca 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,14 +1,13 @@ -# Вставьте после фрагмента +# 在标签头后插入 -Есть строка с HTML-документом. +我们有一个带有HTML文档的字符串。 -Вставьте после тега `` (у него могут быть атрибуты) строку `

Hello

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

Hello

`。标记可能具有属性。 -Например: +例如: ```js let regexp = /ваше регулярное выражение/; - let str = ` @@ -16,15 +15,14 @@ let str = ` `; - str = str.replace(regexp, `

Hello

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

Hello

... -``` +``` \ No newline at end of file From 0b16cadb015209897d2743645649b6a4db98296e Mon Sep 17 00:00:00 2001 From: xdsnet Date: Mon, 20 Dec 2021 10:19:55 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E7=B2=BE=E6=8E=92=E7=BF=BB=E8=AF=91?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-find-non-negative-integers/solution.md | 12 ++++++------ .../1-find-non-negative-integers/task.md | 5 +++-- .../2-insert-after-head/solution.md | 16 ++++++++-------- .../2-insert-after-head/task.md | 6 +++--- 4 files changed, 20 insertions(+), 19 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 815f6bd8de..d391f0ab62 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,8 +1,8 @@ -正则中对于一个整数可以简单的表示为 `表达式:\d+`. +正则中对于一个整数可以简单的表示为 `表达式:\d+` 。 -我们可以通过在它前面加上否定的前瞻来排除不正确的情况: `表达式:(?`标记之后插入,我们必须首先找到它。我们可以使用正则表达式模式``来实现这一点。 +为了在 `` 标记之后插入,我们必须首先找到它。我们可以使用正则表达式模式 `` 来实现这一点。 -在这个任务中,我们不需要修改``标记。我们只需要在它后面添加文本。 +在这个任务中,我们不需要修改 `` 标记。我们只需要在它后面添加文本。 我们可以这样做: ```js run @@ -9,7 +9,7 @@ let str = '......'; str = str.replace(//, '$&

Hello

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

Hello

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

Hello

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

Hello

` 替换。 另一种方法是使用后瞻断言: @@ -18,14 +18,14 @@ let str = '......'; str = str.replace(/(?<=)/, `

Hello

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

Hello

... ``` -正如您所看到的,这个正则表达式中只有后瞻断言部分 +正如您所看到的,这个正则表达式中只有后瞻断言部分。 它的工作原理如下: * 在文本中的每个位置。 -* 检查它之前是否有。 +* 检查它之前是否有 `` 。 * 如果存在,就匹配该位置。 -这个标签 ``在这里并没有作为捕获返回,实际上它匹配到了一个在``后的空字符串(位置)。 -因此,它将紧接``的“空行”替换为`

Hello

`。这样就在``之后插入了内容。 +这个标签 `` 在这里并没有作为捕获返回,实际上它匹配到了一个在 `` 后的空字符串(位置)。 +因此,它将紧接 `` 的“空行”替换为 `

Hello

` 。这样就在 `` 之后插入了内容。 -P.S. 正则式中单标记如`s` 和 `i` 也经常被使用,如: `//si`. 这里 `s`标记使得 `.`可以匹配换行符,而`i` 标记表示大小写不敏感,即 `` 和 ``都可以被匹配。 +另外,正则式中单标记如 `s` 和 `i` 也经常被使用,如: `//si`。这里 `s` 标记使得 `. `可以匹配换行符,而 `i` 标记表示大小写不敏感,即 `` 和 `` 都可以被匹配。 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 bafa3ba7ca..0bd895c3be 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,8 +1,8 @@ # 在标签头后插入 -我们有一个带有HTML文档的字符串。 +我们有一个带有 HTML 文档的字符串。 -编写一个正则表达式,在``标记之后立即插入`

Hello

`。标记可能具有属性。 +编写一个正则表达式,在 `` 标记之后立即插入 `

Hello

` 。标记可能具有属性。 例如: @@ -18,7 +18,7 @@ let str = ` str = str.replace(regexp, `

Hello

`); ``` -在此之后,`str`的值应为: +在此之后, `str` 的值应为: ```html

Hello

From d75b22bf1479c7a8c5f64f16d10149ffe84c20b9 Mon Sep 17 00:00:00 2001 From: xdsnet Date: Mon, 20 Dec 2021 10:26:03 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=80=E5=A4=84?= =?UTF-8?q?=E9=81=97=E6=BC=8F=E7=9A=84=E9=9C=80=E7=BF=BB=E8=AF=91=E7=9A=84?= =?UTF-8?q?=E5=9C=B0=E6=96=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../14-regexp-lookahead-lookbehind/2-insert-after-head/task.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 0bd895c3be..10a10109d3 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 @@ -7,7 +7,7 @@ 例如: ```js -let regexp = /ваше регулярное выражение/; +let regexp = /你的正则表达式/; let str = ` From fe1376c748b87636df682f7ea431bec9e94cc01c Mon Sep 17 00:00:00 2001 From: xdsnet Date: Mon, 20 Dec 2021 10:57:23 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E4=BF=AE=E8=AE=A2=E5=89=8D=E7=9E=BB?= =?UTF-8?q?=E5=90=8E=E7=9E=BB=E7=9A=84=E6=B7=B7=E6=B7=86=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../1-find-non-negative-integers/solution.md | 6 +++--- 1 file changed, 3 insertions(+), 3 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 d391f0ab62..e71525886e 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,6 +1,6 @@ 正则中对于一个整数可以简单的表示为 `表达式:\d+` 。 -我们可以通过在它前面加上否定的前瞻来排除为负的情况: `表达式:(? Date: Fri, 4 Feb 2022 17:46:51 +0800 Subject: [PATCH 5/8] Update solution.md --- .../1-find-non-negative-integers/solution.md | 19 ++++++++++++------- 1 file changed, 12 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 e71525886e..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,23 +1,28 @@ -正则中对于一个整数可以简单的表示为 `表达式:\d+` 。 -我们可以通过在它前面加上否定的后瞻来排除为负的情况: `表达式:(? Date: Fri, 4 Feb 2022 17:51:54 +0800 Subject: [PATCH 6/8] Update task.md --- .../1-find-non-negative-integers/task.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 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 1a331204b7..fb9c54e17b 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,13 +1,15 @@ # 找到非负整数 -这里有一个包含整数的字符串。 +这里有一个由整数组成的字符串。 -创建一个正则表达式来找出所有的非负整数(0 也是非负整数)。 +创建一个正则表达式来找出所有的非负整数(包括 0)。 + +使用示例: -一个例子: ```js let regexp = /你的正则表达式/g; + let str = "0 12 -5 123 -18"; + alert( str.match(regexp) ); // 0, 12, 123 ``` - From d445b3696cb722864f95e7fa02d537582b5b764b Mon Sep 17 00:00:00 2001 From: LeviDing Date: Sat, 5 Feb 2022 22:52:57 +0800 Subject: [PATCH 7/8] Update solution.md --- .../2-insert-after-head/solution.md | 33 +++++++++++-------- 1 file changed, 19 insertions(+), 14 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 e975279db1..851f6f2410 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,31 +1,36 @@ +为了在 `` 标签后面插入内容,我们必须先找到它。我们可以使用正则表达式模式 `pattern:` 来实现。 -为了在 `` 标记之后插入,我们必须首先找到它。我们可以使用正则表达式模式 `` 来实现这一点。 - -在这个任务中,我们不需要修改 `` 标记。我们只需要在它后面添加文本。 +在本题目中,我们不需要修改 `` 标签。我们只需要在它后面添加文本。 我们可以这样做: + ```js run let str = '......'; -str = str.replace(//, '$&

Hello

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

Hello

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

Hello

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

Hello

` 替换。 -另一种方法是使用后瞻断言: +在替换字符串中,`$&` 表示匹配本身,即源文本中与 `pattern:` 相对应的部分。它会被它自身加上 `

Hello

` 替换。 + +另一种方法是使用后行断言: ```js run let str = '......'; -str = str.replace(/(?<=)/, `

Hello

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

Hello

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

Hello

... ``` -正如您所看到的,这个正则表达式中只有后瞻断言部分。 + +正如你所看到的,这个正则表达式中只有后行断言部分。 它的工作原理如下: -* 在文本中的每个位置。 -* 检查它之前是否有 `` 。 -* 如果存在,就匹配该位置。 +- 在文本的每个位置。 +- 检查它前面是否有 `pattern:`。 +- 如果有,就匹配该位置。 + +标签 `pattern:` 不会被作为结果返回。这个正则表达式的结果实际上是一个空字符串,但它只匹配前面紧挨着 `pattern:` 的位置。 -这个标签 `` 在这里并没有作为捕获返回,实际上它匹配到了一个在 `` 后的空字符串(位置)。 -因此,它将紧接 `` 的“空行”替换为 `

Hello

` 。这样就在 `` 之后插入了内容。 +因此,它将紧挨着 `pattern:` 的“空位置”替换为了 `

Hello

`。这样就在 `` 之后插入了内容。 -另外,正则式中单标记如 `s` 和 `i` 也经常被使用,如: `//si`。这里 `s` 标记使得 `. `可以匹配换行符,而 `i` 标记表示大小写不敏感,即 `` 和 `` 都可以被匹配。 +P.S. 正则表达式中修饰符(flag)例如 `pattern:s` 和 `pattern:i` 也很有用:`pattern://si`。这里修饰符(flag)`pattern:s` 使得 `.` 可以匹配换行符,而修饰符 `pattern:i` 使 `pattern:` 大小写不敏感,可以匹配 `match:`。 From bafaea764df1b004ac01eb26855f2c514c215f19 Mon Sep 17 00:00:00 2001 From: LeviDing Date: Sat, 5 Feb 2022 22:57:18 +0800 Subject: [PATCH 8/8] Update task.md --- .../2-insert-after-head/task.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 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 10a10109d3..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 @@ -2,12 +2,13 @@ 我们有一个带有 HTML 文档的字符串。 -编写一个正则表达式,在 `` 标记之后立即插入 `

Hello

` 。标记可能具有属性。 +编写一个正则表达式,在 `` 标签之后立即插入 `

Hello

`。标签可能具有特性(attribute)。 例如: ```js let regexp = /你的正则表达式/; + let str = ` @@ -15,14 +16,15 @@ let str = ` `; + str = str.replace(regexp, `

Hello

`); ``` -在此之后, `str` 的值应为: +之后,`str` 的值应该为: ```html

Hello

... -``` \ No newline at end of file +```