Это невозможно в регулярных выражениях, поскольку это не обычный язык (это легко доказать с помощью Насосная лемма для регулярных языков ). Я не уверен, насколько мощнее регулярное выражение в ruby, чем настоящее регулярное выражение, но я сомневаюсь, что оно достаточно мощное для этого. Вы можете установить конечный предел и указать каждую возможность, например:
a1|aa2|aaa3|aaaa4|aaaaa5||aaaaaa6||aaaaaaa7||aaaaaaaa8||aaaaaaaaa9
Поскольку все конечные языки являются регулярными, но было бы намного проще использовать строковые операции для подсчета числа раз, когда появляется буква, а затем анализировать это целое число в строке сразу после последней из этой буквы.