如何在正则表达式中找到一个组的所有实例?
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+<([^<>]+)>
说明
(?:
非捕获组
(\w+)
捕获 组 1,匹配 1+ 个单词字符
|
或
\G(?!^)
在上一场比赛结束时声明位置,而不是在开始时
)
关闭群组
\h+
匹配 1+ 个水平空白字符
<([^<>]+)>
匹配 <
在 组 2 中捕获除 <
或 >
之外的任何字符并匹配 >
我正在尝试捕获 < 和 > 符号之间的所有文本实例,以及开头的单词。
test <1> <example> <dynamic
我尝试了以下表达式:
(\w+) (?:<(.*?)>)+
但它不起作用。 我必须捕获 1 个或多个组。 我希望它捕获的是(组): * 测试 * 1 * 例子 *动态
但我得到的只是: * 测试 * 1
谁能帮我弄清楚如何正确地做到这一点? 非常感谢。
使用 pcre 你可以有 2 个组,其中第一组将从字符串的开头匹配 test
,第二组将包含介于括号。
\G
锚点将在字符串的开头匹配,或者断言上一个匹配项结束时的位置。
在字符串的开头,您将匹配 1+ 个单词字符。
(?:(\w+)|\G(?!^))\h+<([^<>]+)>
说明
(?:
非捕获组(\w+)
捕获 组 1,匹配 1+ 个单词字符|
或\G(?!^)
在上一场比赛结束时声明位置,而不是在开始时
)
关闭群组\h+
匹配 1+ 个水平空白字符<([^<>]+)>
匹配<
在 组 2 中捕获除<
或>
之外的任何字符并匹配>