Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change

Re: Removing non digits

by dga (Hermit)
on Jul 23, 2003 at 15:09 UTC ( #277194=note: print w/replies, xml ) Need Help??

in reply to Removing non digits

The i does case insensitive matching and since you are removing all upper and lower case letters it will just slow things down (if it does anything at all)

$n =~ s/\D+//g;

This is closer to what you want. This says remove all groups of things that aren't numbers and the /g says to keep doing it until the string is all gone. The =~ says that what follows is a Regular Expression to be applied to the lvalue ($n in this case). I used $n since that was the looping variable in your foreach.I do not know in this case if \D+ is more efficient than just \D which would remove the non digits one at a time.

Also note that this will modify the values in the array such that it will be changed as a result of the foreach.

Also tr would be faster.

$n =~ tr/0-9//cd;

This says remove from $n anything that isn't a 0-9. c says complement the set given ie not 0-9 and d says delete things in the match list that do not appear in the replacement list.

Update: Oops as noted the searchpattern is already taken to be a character list so the brackets do not work like in a RE. mea culpa

Replies are listed 'Best First'.
Re: Re: Removing non digits
by sauoq (Abbot) on Jul 23, 2003 at 17:57 UTC
    $n =~ tr/[0-9]//cd;

    That should be tr/0-9//cd; (no brackets) because tr/// expects a character class, not a regular expression.

    "My two cents aren't worth a dime.";

Log In?

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

How do I use this? | Other CB clients
Other Users?
Others chanting in the Monastery: (5)
As of 2021-06-14 22:14 GMT
Find Nodes?
    Voting Booth?
    What does the "s" stand for in "perls"? (Whence perls)

    Results (66 votes). Check out past polls.