Beefy Boxes and Bandwidth Generously Provided by pair Networks
Just another Perl shrine

Re: regex meaning

by prasadbabu (Prior)
on Nov 12, 2007 at 10:31 UTC ( #650247=note: print w/replies, xml ) Need Help??

in reply to regex meaning

Replacing the number starting with one or more zeros and followed by a number with none. Here (?=\d), is positive look ahead which has zero width assertion. So it ll replace only the zeroes and not the following number.

Take a look at perlre and YAPE::Regex::Explain

For example:

$str = '004asdfsa'; #string starting with zero and followed by numbers $str =~ s/^0+(?=\d)//; print $str; Output: -------- 4asdfsa
$str = 'a004asdfsa'; #not starting with zero $str =~ s/^0+(?=\d)//; print $str; Output: -------- a004asdfsa
$str = '0a4sdfsa'; #no number followed by zero $str =~ s/^0+(?=\d)// ; print $str; Output: -------- 0a4sdfsa


Replies are listed 'Best First'.
Re^2: regex meaning
by bart (Canon) on Nov 12, 2007 at 15:03 UTC
    (I agree with what you say, but... I think a little simplification may be in order.)

    The reason for the lookahead (?=\d) is so it wouldn't replace a string "0000" with "", but with "0", by requiring at least one remaining digit.

    So the purpose is to strip leading zeros from strings that look like numbers, but leave a significant "0".

Re^2: regex meaning
by hashin_p (Initiate) on Nov 12, 2007 at 11:11 UTC
    Thank you very much..

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (3)
As of 2020-05-27 04:10 GMT
Find Nodes?
    Voting Booth?
    If programming languages were movie genres, Perl would be:

    Results (152 votes). Check out past polls.