正则表达式:每个找到的项目的组(PCRE)

发布于 2024-10-21 03:49:49 字数 240 浏览 1 评论 0原文

我正在使用带有 C++ (Borland) 的 PCRE,并且想要获取一组的所有匹配项。

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

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

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

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

// 编辑:

I am using PCRE with C++ (Borland) and want to get all matches of a group.

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

input 1: first second third
results in 3 groups (first, second and third)

input 2:first second second third
results in 3 groups (first, second and third) too, but I need 4 groups.

The second word is optinal and occurs 0 - n times.

// EDIT:

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

怎会甘心 2024-10-28 03:49:49

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

问候

rbo

PCRE seems to have a split function, so if you know your
delimiters are a group of whitespace, you should split the
text and, depending on the count of splitted fields,
react accordingly.

Regards

rbo

っ〆星空下的拥抱 2024-10-28 03:49:49

我认为你最好的办法是匹配 :

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

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

I think your best shot is to match :

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

and then match the inside x words by hand, looking for \s with string comparison.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文