Прежде всего, позвольте мне объяснить, что этот вопрос не касается ни того, как захватить группы, ни того, как использовать квантификаторы, две особенности регулярных выражений, с которыми я прекрасно знаком. Это скорее сложный вопрос для любителей регулярных выражений, которые могут быть знакомы с необычным синтаксисом в экзотических движках.
Получение квантификаторов
Кто-нибудь знает, позволяет ли разновидность регулярных выражений захватывать квантификаторы? Под этим я подразумеваю, что будет подсчитано количество символов, соответствующих квантификаторам, таким как + и *, и что это число может быть снова использовано в другом квантификаторе.
Например, предположим, что вы хотите убедиться, что у вас одинаковое количество букв L и R в строке такого типа: LLLRRRRR
Вы можете представить себе такой синтаксис, как
L(+)R{\q1}
где захвачен квантификатор + для L, и где захваченное число упоминается в квантификаторе для R как {\q1}
Это было бы полезно, чтобы сбалансировать количество {@,=,-,/} в таких строках, как @@@@ Звездные войны ==== 1977 ---- Научная фантастика //// Джордж Лукас
Отношение к рекурсии
В некоторых случаях захват квантификатора мог бы элегантно заменить рекурсию, например, фрагмент текста, обрамленный одинаковым количеством букв L и R, a в
L(+) some_content R{\q1}
Идея представлена в некоторых деталях на следующей странице: Захваченные квантификаторы
Также обсуждается естественное расширение захваченных квантификаторов: арифметика квантификаторов для случаев, когда вы хотите сопоставить (3*x + 1) количество совпавших ранее символов.
Я пытаюсь выяснить, существует ли что-то подобное.
Заранее спасибо за инфу!!!
Обновить
Казимир дал фантастический ответ, который показывает два метода проверки того, что различные части шаблона имеют одинаковую длину. Тем не менее, я бы не хотел полагаться ни на один из них в повседневной работе. Это действительно трюки, демонстрирующие большое зрелищность. На мой взгляд, эти красивые, но сложные методы подтверждают предпосылку вопроса: функция регулярных выражений для захвата количества символов, которые могут сопоставляться квантиферами (такими как + или *), сделает такие шаблоны балансировки очень простыми и расширит синтаксис в приятный выразительный способ.
Обновление 2 (намного позже)
Я узнал, что в .NET есть функция, близкая к тому, о чем я спрашивал. Добавлен ответ для демонстрации функции.