«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как захватить несколько групп в повторяющемся регулярном выражении JavaScript?

Как захватить несколько групп в повторяющемся регулярном выражении JavaScript?

Опубликовано 26 ноября 2024 г.
Просматривать:500

How to Capture Multiple Groups in a Repeated JavaScript Regex?

Захват произвольных групп в регулярном выражении JavaScript

При использовании групп захвата в регулярных выражениях JavaScript важно понимать ограничения. По умолчанию сохраняется только последний захват повторяющейся группы, даже если группа вложенная.

Пример: вложенная группа захвата

Рассмотрим следующее регулярное выражение:

/^(\s*\w ) $/

Ожидается вывод:

["foo bar baz", "foo", " bar", " baz"]

Фактический вывод:

["foo bar baz", " baz"]

В этом случае возвращается только последняя захваченная группа " baz". Это связано с тем, что JavaScript сохраняет только окончательный захват для каждой повторяющейся группы.

Варианты захвата нескольких групп

Чтобы преодолеть это ограничение, доступно несколько вариантов:

  • Разделение по разделителям: Если возможно, используйте разделение строк для разделения нужных сегменты.
  • Цикл выполнения и разделение: Используйте цикл выполнения для многократного сопоставления шаблона внутри строки и разделения захваченной группы на отдельные совпадения.
  • Многоуровневый Сопоставление: Захватите повторяющуюся группу в одном совпадении, а затем используйте другое регулярное выражение для извлечения отдельного экземпляра. сегменты.

Пример: цикл выполнения и разделение

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

var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>";
var r = /<(\w (;\w )*)>/g;
var match;

while ((match = r.exec(text)) != null) {
  print(match[1].split(";"));
}

// Output:
// ["c", "d", "e", "f"]
// ["xx", "yy", "zz"]

В этом примере вложенная группа фиксируется как группа 1, которая затем разделяется точкой с запятой.

Вопросы по теме

  • Как получить доступ к совпадающим группам в регулярном выражении JavaScript?
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3