Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

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]
[ambrus]: Something you can have at home and your corner print shop, without a whole printing press's worth of equipment.
[ambrus]: As for TeX, I'm not trying to discourage anyone from writing carefully beautifully typeset documents, in maths or outside. But most people aren't willing to do that, and will spend only little time about the formatting,
[ambrus]: and try to leave everything else to automated systems without checking how what they write came out format-wise, and for those people, discounting the part about journals with a specific format above,
[ambrus]: just blindly recommending to use LaTeX is a bad idea now.

How do I use this? | Other CB clients
Other Users?
Others contemplating the Monastery: (9)
As of 2017-09-26 11:20 GMT
Find Nodes?
    Voting Booth?
    During the recent solar eclipse, I:

    Results (293 votes). Check out past polls.