我试图在Perl中使用regex。我想知道的是,如果可以将表达式的所有匹配存储到数组中?我知道我可以使用以下:($ 1,…,$ n)= m / expr / g;但它似乎只能使用,如果你知道匹配的数量你正在寻找。我试过我的@array = m / expr / g;但是似乎不工作。
谢谢你的帮助!
解决方法
如果你做一个全局匹配(/ g),那么列表上下文中的正则表达式将返回所有捕获的匹配。简单做:
my @matches = ( $str =~ /pa(tt)ern/g )
这个命令例如:
perl -le '@m = ( "foo12gfd2bgbg654" =~ /(\d+)/g ); print for @m'
给出输出:
12 2 654