2016-04-26 4 views
1

Я пытаюсь повторить захват группу для текстаспособность Повторяющейся группы захвата

a b c d

требуемого выход abcd.

Я попытался повторить группу захвата, такую ​​как ([A-z])(?:(?:[ ]([A-z]))*), чтобы получить желаемые результаты, но группа захвата сохраняет только последнее совпадение. Является ли regex неспособным сохранить результаты группы захвата для повторных захватов? Если это так, означает ли это, что мне не удастся захватить данные, подобные приведенным выше, переменной длины в одном регулярном выражении? Благодарю.

+0

Что такое язык программирования/аромат регулярного выражения? –

+0

'(.) (\ 1)'? Такие вещи? Сопоставьте символ, за которым следует другой символ того же значения? –

+0

Я почти уверен, что в этих повторяющихся группах нет необходимости, вы можете просто сопоставить несколько вхождений с '(? I) [a-z]' –

ответ

0

Ony Dot-Net может получить все это в одном регулярном регулярном совпадении.
Они называются сборкой захвата.

В принципе, каждая группа будет накапливать массив строк, поскольку он идет.

Например,

(?: 
     ([a-zA-Z])       # (1) 
     (?: [ ] | $) 
)+ 

в одной игре, группа 1 содержит Коллекция строк.


В противном случае, в других системах, поведение, как вы описываете,
группа захвата переписывается в каждом проходе количественно.

+0

Не только .NET может это сделать. –

+0

О да, что еще? – sln

+0

Модуль повторного выражения Boost и Python PyPi. Как минимум. В Perl6 существует специальный квантификатор, который обрабатывает повторяющиеся группы. –

Смежные вопросы