Регулярное выражение: группа для каждого найденного элемента (PCRE) - PullRequest
1 голос
/ 09 марта 2011

Я использую PCRE с C ++ (Borland) и хочу получить все совпадения группы.

^(\w+\s)(\w+\s)*(\w+)$

ввод 1: первый второй третий результаты в 3 группах (первая, вторая и третья)

ввод 2: первая вторая вторая третья также приводит к 3 группам (первая, вторая и третья), но мне нужно 4 группы.

Второе слово является опциональным и встречается 0 - n раз.*

// РЕДАКТИРОВАТЬ:

Ответы [ 2 ]

2 голосов
/ 09 марта 2011

PCRE, кажется, имеет функцию split , поэтому, если вы знаете, что ваши разделители представляют собой группу пробелов, вы должны разделить текст и, в зависимости от количества разделенных полей,реагировать соответственно.

С уважением

rbo

1 голос
/ 09 марта 2011

Я думаю, что ваш лучший выстрел должен соответствовать:

^(\w+\s)((?:\w+\s)*)(\w+)$

, а затем сопоставьте внутренние x слов вручную, ища \s со сравнением строк.

...