在perl中如何获得所有匹配的结果/ g?

lex*_*xer 2 regex perl

$string =~ /(pattern)/g;
Run Code Online (Sandbox Code Playgroud)

我知道我可以得到匹配的结果$1,但是如何获得all(/g)并将每个结果推送到数组中?

pb1*_*149 8

你是这个意思吗?

$string = 'patternpattern';
@matches_array = $string =~ /(pattern)/g;
print "@matches_array";
Run Code Online (Sandbox Code Playgroud)

这将产生以下输出:

pattern pattern
Run Code Online (Sandbox Code Playgroud)

  • 是的,但是在列表上下文中,parens并不是绝对必要的.有一个隐含的集合,所以`@a =/match/g`与`@a = /(match)/ g`相同.有点奇怪. (3认同)