Захват произвольных групп в регулярном выражении 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, которая затем разделяется точкой с запятой.
Вопросы по теме
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3