Извлечение всех пар ключ-значение с помощью RegEx в JavaScript

Пройдите тест, узнайте какой профессии подходите

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

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

Метод RegExp.exec() в сочетании с глобальным регулярным выражением поможет эффективно извлечь все совпадения из строки. Используйте его в цикле следующим образом:

JS
Скопировать код
const regex = /pattern/g;  // Здесь представлен наш шаблон regex
const str = 'text';        // Это наша исходная строка
let matches = [];  // Результаты будут храниться здесь
let match;

while ((match = regex.exec(str))) {  // Здесь начинается магия!
  matches.push(match[0]);  // Вот оно, совпадение!
}

// Если требуется учесть группы захвата, используйте match[1], match[2] и так далее.

Теперь массив matches содержит все найденные вхождения шаблона pattern в строку str.

Кинга Идем в IT: пошаговый план для смены профессии

Распаковка: извлечение ключей и значений

Если требуется извлечь пары ключ-значение из текста, структура которого является конкретной, можно использовать регулярное выражение \s*([^:]+):"([^"]+)" с флагами global (g) и multiline (m):

JS
Скопировать код
const keyValueRegex = /\s*([^:]+):"([^"]+)"/gm;  // Область влияния нашего регулярного выражения
const keyValueString = 'key1:"value1" key2:"value2"';  // Наш поисковый объект
let keyValueMatch;
let keyValuePairs = {};

while ((keyValueMatch = keyValueRegex.exec(keyValueString)) !== null) { // Мы следим за происходящим
  let key = keyValueMatch[1];  // Здесь ключ
  let value = keyValueMatch[2];  // И вот, прямо перед вами, значение
  keyValuePairs[key] = value;  // Они создают пару
}

Альтернативные методы для различных задач

Если вам знакомы другие методы, то метод string.matchAll() позволит без проблем обойти все совпадения:

JS
Скопировать код
const matches = [...keyValueString.matchAll(keyValueRegex)]; // Здесь мастер открывает свои секреты
for (const match of matches) {
  console.log(`Ключ: ${match[1]}, Значение: ${match[2]}`);
}

Также можно использоват replace() для изощренной обработки прямо в процессе выполнения, без сохранения совпадений:

JS
Скопировать код
keyValueString.replace(keyValueRegex, (fullMatch, key, value) => {
  console.log(`Ключ: ${key}, Значение: ${value}`); // И они исчезли, как будто их никогда и не было
});

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

Если ваша строка ведет себя как городские джунгли, полные скрытых сокровищ (ваших совпадений), RegExp.exec() становится незаменимым инструментом, подобным металлоискателю.

Городские джунгли: "🏙️💎🏢💰🏙️💼🏙️💰🏢👑🏙️" Металлоискатель Regex: /(💎|💰|👑)/g

Каждый раз, когда звучит RegExp.exec():

JS
Скопировать код
let regExpDetector = /(💎|💰|👑)/g;
let match;
while ((match = regExpDetector.exec(jungle)) !== null) {
  console.log(`Найдено: ${match[0]} на позиции: ${match.index}`);
}

Каждый сигнал обнаруживает новое сокровище и указывает на его точные координаты! 📡⚡️

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

  • Создавайте эффективные шаблоны для повышения производительности.
  • Не забывайте экранировать спецсимволы, такие как \. или \\ в шаблонах регулярных выражений JavaScript.
  • Проверяйте ваши регулярные выражения на разнообразных данных, чтобы убедиться в их способности справляться с любыми задачами.

Понимайте свои ожидания

Осознание структуры ваших входных данных позволит вам более точно использовать регулярные выражения. Если ваши ключи ограничены словами, ваше регулярное выражение может быть следующим: (\w+):"([^"]+)".

Работайте со сложными структурами

В случае обработки вложенных или сложных текстовых структур имейте в запасе рекурсивные функции или дополнительные логические операции внутри вашего цикла для обработки подшаблонов и сложных случаев.

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

  1. RegExp.prototype.exec() – JavaScript | MDN — Полное руководство по RegExp.exec().
  2. How do you access the matched groups in a JavaScript regular expression? – Stack Overflow — Обсуждение работы с группами совпадений в регулярных выражениях.
  3. Regular Expressions :: Eloquent JavaScript — Глава о регулярных выражениях из книги "Элегантный JavaScript".
  4. RegExr: Learn, Build, & Test RegEx — Инструмент для обучения и тестирования регулярных выражений.
  5. Regular expressions – JavaScript | MDN — Руководство по регулярным выражениям в JavaScript.
  6. Regex Tester and Debugger Online – Javascript, PCRE, PHP — Онлайн-тестер и отладчик регулярных выражений.
  7. Methods of RegExp and String — Обзор методов регулярных выражений для решения креативных задач.