У меня есть следующие примеры:
FLAGS DCP
FLAGS PRE
FLAGS 4CH
FLAGS SCMS
FLAGS DCP PRE 4CH SCMS
FLAGS PRE 4CH DCP SCMS
FLAGS 4CH DCP PRE SCMS
И я хотел бы захватить его следующим образом:
FLAGS DCP // group 1 = DCP
FLAGS PRE // group 1 = PRE
FLAGS 4CH // group 1 = 4CH
FLAGS SCMS // group 1 = SCMS
FLAGS DCP PRE 4CH SCMS // group 1 = DCP, group 2 = PRE, group 3 = 4CH, group 4 = SCMS
FLAGS PRE 4CH DCP SCMS // group 1 = PRE, group 2 = 4CH, group 3 = DCP, group 4 = SCMS
FLAGS 4CH DCP PRE SCMS // group 1 = 4CH, group 2 = DCP, group 3 = PRE, group 4 = SCMS
Но используя следующее выражение, он захватывает только первый флаг после FLAGS
:
^\s*FLAGS\s+((?:(?:DCP|4CH|PRE|SCMS)\s*?)+)
Возможно ли это с помощью регулярных выражений или я должен просто разделить то, что после FLAGS
, а затем выполнить синтаксический анализ вручную?