Подстроки повторяющихся символов фиксированной длины

В логах строки вида XXXXxxxYYyyyyZZZZzzW, т.е. ряд повторяющихся символов в разном регистре. Нужно регуляркой захватить из каждого набора повторов подстроки фиксированной длины: было XXXXxxxYYyyyyZZZZzzW и стало ['XXX', 'YYy', 'ZZZ', 'W']. Иначе говоря, если символов больше — убрать лишние, в протвном случае оставить как есть. Знаний регулярок хвалило лишь на /(.)\1{2}|\S/gi, но match захватывает много лишнего. Подскажите, пожалуйста, как быть в данном случае, что исправить? В смысле, чтобы было решено всё регуляркой именно, а не через reduce, map и прочее?


Ответы (1 шт):

Автор решения: Алексей Р

Вариант с негативным просмотром вперед. Особенность: выражение захватывает до трех последних символов в серии.

/(.)\1{0,2}(?!\1)/gmi

Демо

→ Ссылка