ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Извлечение строки между скобками в Javascript: регулярные выражения

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Для извлечения текста, заключенного в скобки, в JavaScript можно использовать регулярное выражение /\(([^)]+)\)/:

JS
Скопировать код
const result = "Пример (текст для извлечения)".match(/\(([^)]+)\)/)?.[1] || null;
console.log(result); // "текст для извлечения"

Выражение [^)]+ обозначет любую последовательность символов, не включающую закрывающую скобку. Оператор ?.[1] гарантирует отсутствие ошибки и возвращает null в случае, если совпадений не найдено.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Разбор выражения

Разберем, что означает каждый элемент регулярного выражения /\(([^)]+)\)/:

  • \( и \): Это литералы, означающие открывающую и закрывающую круглые скобки. В регулярных выражениях символы ( и ) имеют специальное значение.
  • ([^)]+): Это группа захвата, которая включает в себя один или более символов, кроме закрывающей скобки.

Работа с особыми случаями

Обработка нескольких групп

Если требуется найти несколько совпадений, используйте глобальный флаг g:

JS
Скопировать код
const matches = [..."Пример (первый) Пример (второй)".matchAll(/\(([^)]+)\)/g)];
matches.forEach(match => console.log(match[1]));
// Вывод в консоль:
// "первый"
// "второй"

Работа с вложенными скобками

Для работы с вложенными скобками базовое регулярное выражение не подойдет, поскольку в JavaScript нельзя задавать рекурсивные шаблоны. В этом случае можно пройтись по строке с помощью итерации или использовать специальные парсеры.

Альтернатива: работа со строками

Функция split может служить хорошей альтернативой регулярным выражениям для простых операций:

JS
Скопировать код
const str = "Пример (текст для извлечения)";
const beforeBrace = str.split('(')[1] || ""; // разделяем строку до первой открывающей скобки
const result = beforeBrace.split(')')[0] || null; // разделяем строку до следующей закрывающей скобки
console.log(result); // "текст для извлечения"

Однако стоит помнить, что регулярные выражения обеспечат большую гибкость при работе со сложными текстами.

Визуализация

Рассмотрим это на примере строки:

Markdown
Скопировать код
Строка: "Созерцая звезды (удивление и восхищение) в ночном небе."

Применим к ней наше регулярное выражение:

JS
Скопировать код
Match = str.match(/\(([^)]+)\)/);

И вот результат. Регулярное выражение успешно извлекает необходимый текст:

Markdown
Скопировать код
🔍 Сканировано: "Созерцая звезды (удивление и восхищение) в ночном небе."
🏊 Найдено: "удивление и восхищение"

Видно, какую мощь предоставляет нам регулярное выражение!

Полезные советы и хитрости

Сочетание глобального поиска и метода matchAll

Для извлечения всех вхождений текста, заключенного в скобки, используйте флаг g вместе с методом matchAll:

JS
Скопировать код
const regex = /\(([^)]+)\)/g;
const string = "Многие (жемчужины) скрыты в (глубинах) океана.";
const matchesIterator = string.matchAll(regex);
for (const match of matchesIterator) {
    console.log(match[1]);
}

Обработка случаев, когда совпадений не найдено

Всегда учтите возможность того, что совпадений не будет, чтобы избежать ошибок в выполнении кода:

JS
Скопировать код
const match = "Здесь нет скобок".match(/\(([^)]+)\)/);
const result = match ? match[1] : null;

Роль групп захвата

Группа захвата №1 (([^)]+)) отвечает за извлечение интересующего нас текста. Цель достигнута. 🎯

Тестирование регулярных выражений

Для тестирования и анализа регулярных выражений можно использовать различные онлайн-редакторы, например regex101.

Полезные материалы

  1. Регулярные выражения в JavaScript | MDN – подробное руководство по использованию регулярных выражений в JavaScript.
  2. RegExp.prototype.exec() – JavaScript | MDN – подробное объяснение работы метода exec().
  3. JavaScript RegExp Reference — справочник с примерами по RegExp.
  4. regex101: создание, тестирование, отладка регулярных выражений — онлайн-инструмент для тестирования регулярных выражений.
  5. [Regular Expressions Cookbook, 2nd Edition [Book]](https://www.oreilly.com/library/view/regular-expressions-cookbook/9781449327453/) — ресурс для основательного изучения регулярных выражений.
  6. Regular Expression Tutorial — учебник по регулярным выражениям для начинающих.
  7. Patterns and flags – вводный материал по паттернам и флагам регулярных выражений в JavaScript.