Is it possible to store all matches for a regular expression into an array?
I know I can use ($1,...,$n) = m/expr/g;
, but it seems as though that can only be used if you know the number of matches you are looking for. I have tried my @array = m/expr/g;
, but that doesn't seem to work.
match(regexp) finds matches for regexp in the string str . If the regexp has flag g , then it returns an array of all matches as strings, without capturing groups and other details. If there are no matches, no matter if there's flag g or not, null is returned.
$1 equals the text " brown ".
capturing in regexps means indicating that you're interested not only in matching (which is finding strings of characters that match your regular expression), but you're also interested in using specific parts of the matched string later on.
If you're doing a global match (/g
) then the regex in list context will return all of the captured matches. Simply do:
my @matches = ( $str =~ /pa(tt)ern/g )
This command for example:
perl -le '@m = ( "foo12gfd2bgbg654" =~ /(\d+)/g ); print for @m'
Gives the output:
12 2 654
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With