Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much

Re^2: need help with a Regex

by Dietz (Curate)
on Oct 06, 2004 at 15:32 UTC ( #397027=note: print w/replies, xml ) Need Help??

in reply to Re: need help with a Regex
in thread need help with a Regex

L~R, you are right with using anchors to limit the scope.
But your solution would only match a single digit instead of a number (not what the OP wanted).

One solution would be (not documented as of dragonchild's post):

++ for the right approach
Monkish Greetings,

Replies are listed 'Best First'.
Re^3: need help with a Regex
by Limbic~Region (Chancellor) on Oct 06, 2004 at 15:44 UTC
    But your solution would only match a single digit instead of a number (not what the OP wanted). emphasis mine

    Well see here is the quandry. You have interpreted it one way and I have another. Peamasii didn't define what exactly s/he meant by number. It could mean a single digit as I used, it could mean an integer which you described (which will match 0004 and miss -4 btw), or it could mean any number (pun intended) of things. For instance:

    use Scalar::Util 'looks_like_number'; if ( looks_like_number( $foo ) && $foo =~ /^\??$/ ) {...}
    It is probably as common a mistake to assume what you are thinking is universally understood when asking questions as it is for the person that is answering to assume they know what you mean. I think we both fall into the latter category this time.

    Cheers - L~R

      L~R, you are right again.
      Didn't see it the way you described, especially when it comes to numbers with a minus before.

      I was just recognizing the single digit match. And I was hesitating to post anyways (as of dragonchild's post above)

      And I really didn't mean to offend you, I have great respect for you - as I have for most other monks here.

      Respect, Dietz
        I wasn't offended and I hope I wasn't offending. I saw it as an opportunity to not argue over what someone might have meant and instead point out how assumptions lead down the wrong road.

        Cheers - L~R

      Well, numbers fall into so many possible formats that it's impossible to catch them all. I'm going to assume that any integer or decimal format is allowed, and write the following:
      foreach (<DATA>) { print $_ if $_ =~ /^(\?|-?\d*\.?\d+)?$/; } __DATA__ ? 3 3.3 .3 -3 -3.3 -.3 ? 3-3 -
        That is why I suggested Scalar::Util's 'looks_like_number'. For instance, your regex misses at least numbers in scientific notation. Here is the applicable code:
        # Copied from Scalar::Util sub looks_like_number { local $_ = shift; # checks from perlfaq4 return $] < 5.009002 unless defined; return 1 if (/^[+-]?\d+$/); # is a +/- integer return 1 if (/^([+-]?)(?=\d|\.\d)\d*(\.\d*)?([Ee]([+-]?\d+))?$/); # +a C float return 1 if ($] >= 5.008 and /^(Inf(inity)?|NaN)$/i) or ($] >= 5.006 +001 and /^Inf$/i); 0; }

        Cheers - L~R

Re^3: need help with a Regex
by Eimi Metamorphoumai (Deacon) on Oct 06, 2004 at 15:45 UTC
    You probably don't need the capturing parens. I'd write it as
    where the empty string is just a zero digit number, but that's just me.

Log In?

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://397027]
[marioroy]: Only 2 backslash \\n
[marioroy]: LA no space before Albums
[Lady_Aleena]: Good guh! I think I will use File::Find when working in perl. That is too many toothpicks.
[marioroy]: mp3info must be in the PATH
[marioroy]: LA ++
[Lady_Aleena]: marioroy, this is forcing me to learn perl modules to use instead.
[marioroy]: qx isn't fun if having to backslash ' and " and \.
[marioroy]: LA ++ ok.
[marioroy]: I wrote a mp3info script to see the arguments received with print "@ARGV\n";
[marioroy]: And compared with running find on the command line.

How do I use this? | Other CB clients
Other Users?
Others studying the Monastery: (6)
As of 2017-04-23 21:26 GMT
Find Nodes?
    Voting Booth?
    I'm a fool:

    Results (432 votes). Check out past polls.