У меня есть следующая строка:
one two three four five six seven eight nine
И я пытаюсь построить регулярное выражение, которое группирует строку в три группировки:
- Группа 1: «один два три»
- Группа 2: «четыре пять шесть»
- Группа 3: «семь восемь девять»
Я пробовал варианты (.*\b(one|two|three)?)(.*\b(four|five|six)?)(.*\b(seven|eight|nine)?)
, но этот шаблон разбивает полное совпадение на одну группу, содержащую полную строку - демо можно найти здесь .
Попытка (.*\b(one|two|three))(.*\b(four|five|six))(.*\b(seven|eight|nine))
, кажется, приближает меня к тому, что я хочу, но панель информации о совпадении показывает, что шаблон идентифицирует два совпадения, каждое из которых содержит шесть групп захвата.
Я использую оператор OR, потому что группы могут быть любой длины, например, two three four
, применение шаблона к этой строке должно идентифицировать две группы -
- Группа 1: «два»
- Группа 2: «три четверки».