【问题标题】:Regexp: group for every found item (PCRE)正则表达式:每个找到的项目的组(PCRE)
【发布时间】:2011-03-09 10:05:27
【问题描述】:

我正在将 PCRE 与 C++ (Borland) 一起使用,并希望获得一个组的所有匹配项。

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

输入1:第一第二第三 结果分为3组(第一,第二和第三)

输入2:第一第二第二第三 结果也分为 3 组(第一、第二和第三),但我需要 4 组。

第二个词是可选的,出现 0 - n 次。

// 编辑:

【问题讨论】:

  • 我认为这是不可能的。见stackoverflow.com/questions/5018487/…
  • 不可能直接,但是将第二个捕获从(\w+\s)* 更改为((?:\w+\s)*) 将捕获所有内容,代价是需要对第二个捕获组进行额外的拆分步骤以提取所有元素。

标签: c++ regex pcre


【解决方案1】:

PCRE 似乎有一个split 函数,所以如果你知道你的 分隔符是一组空格,你应该分割 文本,并且根据拆分字段的数量, 做出相应的反应。

问候

rbo

【讨论】:

  • 在这个主题上看起来像 Koders 的东西 here
【解决方案2】:

我认为你最好的选择是匹配:

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

然后手动匹配里面的x个单词,通过字符串比较查找\s

【讨论】:

  • 无铅。如果您解决了这个问题,请不要忘记投票给相关的答案和 cmets 以奖励作者。并将您的问题标记为已解决以关闭该主题。非常感谢。
猜你喜欢
  • 1970-01-01
  • 2023-03-20
  • 2014-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-02
相关资源
最近更新 更多