如何在正则表达式中找到一个组的所有实例?

How can I find all instances of a group in regexp?

我正在尝试捕获 < 和 > 符号之间的所有文本实例,以及开头的单词。

test <1> <example> <dynamic

我尝试了以下表达式:

(\w+) (?:<(.*?)>)+

但它不起作用。 我必须捕获 1 个或多个组。 我希望它捕获的是(组): * 测试 * 1 * 例子 *动态

但我得到的只是: * 测试 * 1

谁能帮我弄清楚如何正确地做到这一点? 非常感谢。

使用 pcre 你可以有 2 个组,其中第一组将从字符串的开头匹配 test,第二组将包含介于括号。

\G 锚点将在字符串的开头匹配,或者断言上一个匹配项结束时的位置。

在字符串的开头,您将匹配 1+ 个单词字符。

(?:(\w+)|\G(?!^))\h+<([^<>]+)>

Regex demo

说明

  • (?:非捕获组
    • (\w+) 捕获 组 1,匹配 1+ 个单词字符
    • |
    • \G(?!^) 在上一场比赛结束时声明位置,而不是在开始时
  • ) 关闭群组
  • \h+ 匹配 1+ 个水平空白字符
  • <([^<>]+)> 匹配 < 组 2 中捕获除 <> 之外的任何字符并匹配 >