c ++正则表达式:匹配标签后跟逗号分隔值

时间:2017-12-07 09:42:55

标签: c++ regex

来自字符串

label: first, second, third

我想提取:

  • 标签
  • 第一
  • 第二
  • 第三

以下所有输入均有效:

label: first, second, third
label: first
label

编辑:列表可以包含0,1或n个项目)

我提出了两种不同的模式,它们都没有给我#34;右边#34;结果:

(?:(\w+ (\d+))| -> (\w+)|, (\w+))+

给了我

  • 标签:第一,第二,第三
  • ,第三次
  • 标签
  • 第一
  • 第三

    re(\ w +)(?::(\ w +))?(?:,(\ w +))*

给了我

  • 标签:第一,第二,第三
  • 标签
  • 第一
  • 第三

这是a test implementation

我怎样才能输出?

  • 标签:第一,第二,第三
  • 标签
  • 第一
  • 第二
  • 第三

1 个答案:

答案 0 :(得分:1)

您可以使用

(\w+)(?::\s*(\w+)(?:,\s*(\w+)(?:,\s*(\w+))?)?)?

Demo