Beefy Boxes and Bandwidth Generously Provided by pair Networks Russ
There's more than one way to do things
 
PerlMonks  

Re: perl equiv regex for C strtol

by GrandFather (Cardinal)
on May 01, 2012 at 00:44 UTC ( #968185=note: print w/ replies, xml ) Need Help??


in reply to perl equiv regex for C strtol

If you just want the numbers then /(\d+)/g will do the trick. It may be that you have further constraints than that, in which case start by reading perlretut.

True laziness is hard work


Comment on Re: perl equiv regex for C strtol
Download Code
Re^2: perl equiv regex for C strtol
by Largins (Acolyte) on May 01, 2012 at 01:14 UTC

    Thanks for the advice.
    I have been writing code since 1968, actually the first few lines prior to that. I had a series back in the 70's in Kilobaud magazine, and spent 15 years in the Unix environment. I have used regular expressions, and even felt quite confident when it came to knowing how I was going to do something before I started. Unlike playing the piano, however I have had to re-learn how to use every time I stop for a few years.
    Now I am 65, and am lucky I remember which side of the bed to get out of
    I will however learn again, I just need a little help this evening.
    As always, I have found it on PerlMonks!
    Thanks Again - L.

    br

      Hi

      Regexp::English

      #!/usr/bin/perl -- use Regexp::English; print Regexp::English ->new ->remember ->multiple ->digit, "\n"; __END__ (?^:((?:\d+)))

      Becomes

      my( @numbers ) = $str -~ m{ (\d+) }gx;
      /g means global match (match them all), x means ignore literal white space in pattern

      YAPE::Regex::Explain can explain a lot of these (though it could use some updating)

      use YAPE::Regex::Explain; print YAPE::Regex::Explain->new( qr{ (\d+) }x, )->explain; __END__ The regular expression: (?x-ims: (\d+) ) matches as follows: NODE EXPLANATION ---------------------------------------------------------------------- (?x-ims: group, but do not capture (disregarding whitespace and comments) (case-sensitive) (with ^ and $ matching normally) (with . not matching \n): ---------------------------------------------------------------------- ( group and capture to \1: ---------------------------------------------------------------------- \d+ digits (0-9) (1 or more times (matching the most amount possible)) ---------------------------------------------------------------------- ) end of \1 ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------

      See also Visual (perl/Tk) regex tweaking utility (its like a living cheatsheet). See also perlrequick

      And see Regexp::Common

      $ perl -MRegexp::Common -e " print $RE{num}{int} " (?:(?:[+-]?)(?:[0123456789]+))

      And the magic of /x revealed

      #!/usr/bin/perl -- use strict; use warnings; my $REint = qr{ #--------------------------------------------------------------------- +- (?: # group, but do not capture: #--------------------------------------------------------------------- +- (?: # group, but do not capture: #--------------------------------------------------------------------- +- [+-]? # any character of: '+', '-' (optional # (matching the most amount possible)) #--------------------------------------------------------------------- +- ) # end of grouping #--------------------------------------------------------------------- +- (?: # group, but do not capture: #--------------------------------------------------------------------- +- [0123456789]+ # any character of: '0', '1', '2', '3', # '4', '5', '6', '7', '8', '9' (1 or # more times (matching the most amount # possible)) #--------------------------------------------------------------------- +- ) # end of grouping #--------------------------------------------------------------------- +- ) # end of grouping #--------------------------------------------------------------------- +- }x; # end of qr print "$_\n" for "1 plus 1 is 2" =~ m/$REint/g __END__ 1 1 2

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others having an uproarious good time at the Monastery: (14)
As of 2013-05-22 12:18 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best material for plates (tableware) is:









    Results (461 votes), past polls