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