Beefy Boxes and Bandwidth Generously Provided by pair Networks Cowboy Neal with Hat
We don't bite newbies here... much
 
PerlMonks  

Re: RegEx Headaches

by bart (Canon)
on Jun 19, 2013 at 18:41 UTC ( #1039821=note: print w/ replies, xml ) Need Help??


in reply to RegEx Headaches

You can do

@numbers = /(\d+)(?=\.)(?=.*\.xml$)/g
This uses lookahead, which will match the rest of the string, but not consume it.

If you don't need the extra check, you can just do

@numbers = /(\d+)/g


Comment on Re: RegEx Headaches
Select or Download Code
Re^2: RegEx Headaches
by oryx3 (Novice) on Jun 19, 2013 at 18:59 UTC

    Hmmm, interesting. Now I've got:

    DB<23> x $_ 0 'ActionLogs.1.2.3.4.5.6.7.8.9.xml' DB<24> x /(\d+\.)/g 0 1. 1 2. 2 3. 3 4. 4 5. 5 6. 6 7. 7 8. 8 9.

    but:

    DB<25> x /(\d+\.)+/g 0 9.

    Can anyone tell me why the quantifier makes it match only the last group?

      The quantifier actually makes it match every group; however, it only stores the last match in $1, and thus that's what you see in your return. See Extracting matches in perlretut.

      If you want to extract an arbitrary number of digits sandwiched between decimal points, you can grab them all, and then split the result.

      /((?:\d+\.)+)/g; split /(?<=\.)/, $1;
      Alternatively,
      [i]n list context, //g returns a list of matched groupings, or if there are no groupings, a list of matches to the whole regexp
      (see Global matching in perlretut) so you could try
      my @res = /(?<=\.)\d+\./g;

      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://1039821]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others taking refuge in the Monastery: (7)
As of 2014-04-20 19:24 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (487 votes), past polls