Регулярное выражение захвата повторной группы - PullRequest
0 голосов
/ 28 июня 2010

Я пытаюсь разобрать входную строку с помощью регулярного выражения. У меня проблема при попытке захвата повторяющейся группы. Кажется, я всегда соответствую последнему экземпляру группы. Я пытался использовать Reluctant (не жадные) квантификаторы, но мне, кажется, что-то не хватает. Может кто-нибудь помочь?

Попытка регулярного выражения:

(OS)\\s((\\w{3})(([A-Za-z0-9]{2})|(\\w{3})(\\w{3}))\\/{0,1}){1,5}?\\r

(OS)\\s((\\w{3}?)(([A-Za-z0-9]{2}?)|(\\w{3}?)(\\w{3}?))\\/{0,1}?){1,5}?\\r

Строка ввода:

OS BENKL/LHRBA/MANQFL\r\n

Кажется, я всегда фиксирую последнюю группу, которая является группой MANQFL (MAN QFL), и моя цель - собрать все три группы (может быть 1-5 групп):

(BEN KL) , (LHR BA) and (MAN QFL). 

Любая помощь будет оценена.

1 Ответ

3 голосов
/ 28 июня 2010

Когда вы повторяете группу захвата в регулярном выражении, группа захвата сохраняет только текст, соответствующий его последней итерации.Если вам нужно захватить несколько итераций, вам нужно использовать более одного регулярного выражения.(.NET является единственным исключением из этого. Его CaptureCollection обеспечивает совпадения всех итераций группы захвата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...