feat: edit regexp-groups article and tasks ru by front42 · Pull Request #2134 · javascript-tutorial/ru.javascript.info
1. Позволяет поместить часть совпадения в отдельный массив. 2. Если установить квантификатор после скобок, то он будет применяться ко всему содержимому скобки, а не к одному символу. 2. Если установить квантификатор после скобок, то он будет применяться ко всему содержимому группы, а не к одному символу.
## Примеры
Как видите, первое отличие - очень важное, это демонстрирует строка `(*)`. Мы не можем получить совпадение как `results[0]`, так как этот объект не является псевдомассивом. Его можно превратить в настоящий массив при помощи `Array.from`. Более подробно о псевдомассивах и перебираемых объектов мы говорили в главе <info:iterable>. Как видите, первое отличие - очень важное, это демонстрирует строка `(*)`. Мы не можем получить совпадение как `results[0]`, так как этот объект не является псевдомассивом. Его можно превратить в настоящий массив при помощи `Array.from`. Более подробно о псевдомассивах и перебираемых объектах мы говорили в главе <info:iterable>.
В явном преобразовании через `Array.from` нет необходимости, если мы перебираем результаты в цикле, вот так:
## Именованные группы
Запоминать группы по номерам не очень удобно. Для простых шаблонов это допустимо, но в сложных регулярных выражениях считать скобки затруднительно. Гораздо лучше - давать скобкам имена. Запоминать группы по номерам не очень удобно. Для простых шаблонов это допустимо, но в сложных регулярных выражениях считать скобки затруднительно. Гораздо лучше - давать группам имена.
Это делается добавлением `pattern:?<name>` непосредственно после открытия скобки.
Для именованных скобок ссылка будет выглядеть как `pattern:$<имя>`. Для именованных групп ссылка будет выглядеть как `pattern:$<имя>`.
Например, заменим даты в формате "год-месяц-день" на "день.месяц.год":
## Итого
Круглые скобки группируют вместе часть регулярного выражения, так что квантификатор применяется к ним в целом. Круглые скобки группируют вместе часть регулярного выражения, так что квантификатор применяется к ней в целом.
Скобочные группы нумеруются слева направо. Также им можно дать имя с помощью `pattern:(?<name>...)`.
Если скобка не имеет имени, то содержимое группы будет по своему номеру в массиве-результате, если имеет, то также в свойстве `groups`. Если скобочная группа не имеет имени, то её содержимое будет по своему номеру в массиве-результате, а если имеет, то также в свойстве `groups`.
Содержимое скобочной группы можно также использовать при замене `str.replace(regexp, replacement)`: по номеру `$n` или по имени `$<имя>`.
Можно исключить скобочную группу из запоминания, добавив в её начало `pattern:?:`. Это используется, если необходимо применить квантификатор ко всей группе, но не запоминать их содержимое в отдельном элементе массива-результата. Также мы не можем ссылаться на такие скобки в строке замены. Можно исключить скобочную группу из запоминания, добавив в её начало `pattern:?:`. Это используется, если необходимо применить квантификатор ко всей группе, но не запоминать её содержимое в отдельном элементе массива-результата. Также мы не можем ссылаться на такую группу в строке замены.