Извлечение всех пар ключ-значение с помощью RegEx в JavaScript
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Метод RegExp.exec()
в сочетании с глобальным регулярным выражением поможет эффективно извлечь все совпадения из строки. Используйте его в цикле следующим образом:
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
.
Распаковка: извлечение ключей и значений
Если требуется извлечь пары ключ-значение из текста, структура которого является конкретной, можно использовать регулярное выражение \s*([^:]+):"([^"]+)"
с флагами global (g
) и multiline (m
):
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()
позволит без проблем обойти все совпадения:
const matches = [...keyValueString.matchAll(keyValueRegex)]; // Здесь мастер открывает свои секреты
for (const match of matches) {
console.log(`Ключ: ${match[1]}, Значение: ${match[2]}`);
}
Также можно использоват replace()
для изощренной обработки прямо в процессе выполнения, без сохранения совпадений:
keyValueString.replace(keyValueRegex, (fullMatch, key, value) => {
console.log(`Ключ: ${key}, Значение: ${value}`); // И они исчезли, как будто их никогда и не было
});
Визуализация
Если ваша строка ведет себя как городские джунгли, полные скрытых сокровищ (ваших совпадений), RegExp.exec()
становится незаменимым инструментом, подобным металлоискателю.
Городские джунгли: "🏙️💎🏢💰🏙️💼🏙️💰🏢👑🏙️" Металлоискатель Regex: /(💎|💰|👑)/g
Каждый раз, когда звучит RegExp.exec()
:
let regExpDetector = /(💎|💰|👑)/g;
let match;
while ((match = regExpDetector.exec(jungle)) !== null) {
console.log(`Найдено: ${match[0]} на позиции: ${match.index}`);
}
Каждый сигнал обнаруживает новое сокровище и указывает на его точные координаты! 📡⚡️
Совершенствуйтесь в регулярных выражениях
- Создавайте эффективные шаблоны для повышения производительности.
- Не забывайте экранировать спецсимволы, такие как
\.
или\\
в шаблонах регулярных выражений JavaScript. - Проверяйте ваши регулярные выражения на разнообразных данных, чтобы убедиться в их способности справляться с любыми задачами.
Понимайте свои ожидания
Осознание структуры ваших входных данных позволит вам более точно использовать регулярные выражения. Если ваши ключи ограничены словами, ваше регулярное выражение может быть следующим: (\w+):"([^"]+)"
.
Работайте со сложными структурами
В случае обработки вложенных или сложных текстовых структур имейте в запасе рекурсивные функции или дополнительные логические операции внутри вашего цикла для обработки подшаблонов и сложных случаев.
Полезные материалы
- RegExp.prototype.exec() – JavaScript | MDN — Полное руководство по
RegExp.exec()
. - How do you access the matched groups in a JavaScript regular expression? – Stack Overflow — Обсуждение работы с группами совпадений в регулярных выражениях.
- Regular Expressions :: Eloquent JavaScript — Глава о регулярных выражениях из книги "Элегантный JavaScript".
- RegExr: Learn, Build, & Test RegEx — Инструмент для обучения и тестирования регулярных выражений.
- Regular expressions – JavaScript | MDN — Руководство по регулярным выражениям в JavaScript.
- Regex Tester and Debugger Online – Javascript, PCRE, PHP — Онлайн-тестер и отладчик регулярных выражений.
- Methods of RegExp and String — Обзор методов регулярных выражений для решения креативных задач.