http://www.perlmonks.org?node_id=967266


in reply to Re: How regex works in array mode?
in thread How regex works in array mode?

Hmm.. How will I get rid all the capturing parens? Sorry for the noob question. still learning this whole regex thing...

Replies are listed 'Best First'.
Re^3: How regex works in array mode?
by JavaFan (Canon) on Apr 26, 2012 at 08:37 UTC
    How will I get rid all the capturing parens?
    An easy way, one that should also speed up your pattern, make it more understandable, and saves typing, is to replace
    ([0-9]{3}|[0-9]{2}|[0-9]{1})
    with
    [0-9]{1,3}
    Of course, you could also use the Regexp::Common module: but be aware, unlike your pattern, the one in Regexp::Common rejects invalid IP addresses.
      I already replace it and the output is:
      ip:192.168.243.1

      but it doesn't print the "ip:192.168.243.2" Is it possible to print the next value in the array? Thanks

      or is this output possible?

      ip:192.168.243.1 ip:192.168.243.2
        Perhaps you haven't replaced it correctly?
        use 5.010; my @lines = ("ip:192.168.243.1", "ip:192.168.243.2" =~ /(ip:[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})/); say for @lines; __END__ ip:192.168.243.1 ip:192.168.243.2
        Do note that ip:192.168.243.2 is in @lines only because the pattern matches the entire string. And do note that "ip:192.168.243.1" is not subject to any matching. In fact, the assignment to @lines is equivalent with:
        my @lines; $lines[0] = "ip:192.168.243.1"; push @lines, $1 if "ip:192.168.243.2" =~ /(ip:[0-9]{1,3}\.[0-9]{1,3}\. +[0-9]{1,3}\.[0-9]{1,3})/;