perl正则表达式捕获重复组

aga*_*bio 6 regex perl

我想要一个匹配行开头的正则表达式,然后匹配(并返回)所有其他单词.例如,给定这一行:

$line = "one two three etc";
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西(这不起作用):

@matches= $line=~ /^one(?:\s+(\S+))$/;
Run Code Online (Sandbox Code Playgroud)

返回@matches,单词"two","three","etc".

我不想知道如何得到这些话.我想用正则表达式来做.看起来很简单,但我还没有找到解决方案.

Cas*_*yte 5

为此,您需要使用\G与上一场比赛结束时的位置相匹配的锚点。当您使用此锚点构建模式时,您可以获得连续的结果:

@matches = $line =~ /(?:\G(?!\A)|^one) (\S+)/g; 
Run Code Online (Sandbox Code Playgroud)