Проектная лаборатория

Собственный Grep

0 / 33этапов пройдено

Этап 15 · Обратные ссылки

Обратные ссылки на вложенные группы

Русский перевод заданий CodeCrafters. Примеры подготовлены для Go. Выбор языка меняет команды и результаты, но не текст задания.

На этом этапе вы добавите поддержку обратных ссылок на вложенные группы.

Вложенные захватывающие группы

При вложении захватывающих групп каждая всё равно получает собственный номер обратной ссылки. Нумерация определяется положением открывающей скобки ((), слева направо.

Разберём шаблон ('(cat) and \2') is the same as \1:

  • Первая группа (первая (): '(cat) and \2'.
  • Вторая группа (вторая (): (cat).
  • \2 ссылается на вторую группу и соответствует "cat".
  • \1 ссылается на первую группу и соответствует всей строке "'cat and cat'".

Пример входной строки, соответствующей этому шаблону: "'cat and cat' is the same as 'cat and cat'".

Ещё примеры:

  • ((dog)-\2) находит совпадение в "dog-dog" (вторая группа — "dog", первая — "dog-dog").
  • ((\w+) \2) and \1 находит совпадение в "cat cat and cat cat".

Проверки

Тестирующая система запустит программу так:

$ echo -n "'cat and cat' is the same as 'cat and cat'" | ./your_program.sh -E "('(cat) and \2') is the same as \1"

Программа должна:

  • Завершиться с кодом 0, если входная строка соответствует шаблону с обратными ссылками на вложенные группы.
  • Завершиться с кодом 1 в противном случае.

Проверка в вашей IDE

Нужны Node.js, Git, Go 1.24+ для тестеров и инструменты выбранного языка. Тестеры загружаются и запускаются локально; отдельным проектам нужны дополнительные системные зависимости.

Настройка проекта и IDE

1. Создайте проект один раз

node '/opt/graphlms/tools/project-lab/cli.mjs' init grep ./my-grep --language go

2. Откройте папку в IDE

cd ./my-grep

Реализуйте требования этапа в созданном проекте.

Запустите из папки проекта

node '/opt/graphlms/tools/project-lab/cli.mjs' submit --stage xe5

Запускайте submit из папки проекта. Это локальные проверки, а не сертификаты или результаты аккаунта CodeCrafters.

Результат проверки

go / ЛОКАЛЬНО

Подключение к локальной проверке…

Здесь появится результат

Запустите submit в терминале. Страница обновляет результаты каждые 8 секунд.

GraphLMS — инженерная лаборатория роста