in reply to Re: how to extract string by possible groupings?
in thread how to extract string by possible groupings?


/((.*\.c\s)|(.*\.h\s)|(.*\.cpp\s))|(\s+(.*)\%\s+(of+)\s+\d+\s)|(\bNone\b)/g
#01         2         3            4   5        6              7

Capture group numbering begins at 1, not 0, so the capture group variables corresponding to the capturing groups in the example would be $1 .. $8. In the  @- and  @+ arrays, the offsets of the entire match are held at index 0. Otherwise,  $0 holds the script name. See Variables related to regular expressions and perlvar in general.

Update: The [originally posted] question was for a match in list context ... which returns the matches as a list into an array. Quite right; my mistake.

Replies are listed 'Best First'.
Re^3: how to extract string by possible groupings?
by LanX (Saint) on Jun 02, 2014 at 23:22 UTC
    See OP

    The question was for a match in list context

    (@match) = ( $_ =~ /.../g )

    which returns the matches as a list into an array.

    i.e. $match[0]=$1 ( see perlop ¹ )

    I didn't want to confuse with more details than necessary...

    Cheers Rolf

    (addicted to the Perl Programming Language)

    update

    well actually the /g modifier isn't necessary and might produce too many matches...

    DB<110> @matches = ('abcd' =~ /(.)(.)/) => ("a", "b") DB<111> @matches = ('abcd' =~ /(.)(.)/g) => ("a", "b", "c", "d") DB<112> $matches[0] => "a"

    ¹) perlop#Regexp-Quote-Like-Operators

    * Matching in list context

    If the "/g" option is not used, "m//" in list context returns a list consisting of the subexpressions matched by the parentheses in the pattern, i.e., ($1, $2, $3...).