Beefy Boxes and Bandwidth Generously Provided by pair Networks
Think about Loose Coupling
 
PerlMonks  

Re: List-to-Range generation

by chipmunk (Parson)
on Jun 12, 2001 at 02:55 UTC ( #87672=note: print w/ replies, xml ) Need Help??


in reply to List-to-Range generation

Woops, it also converts (11,2,3) to "11-3" and (1,2,30) to "1-30". :)

Here's one way to fix it:

sub num2range { local $_ = join ',' => @_; s/(?<!\d)(\d+)(?:,((??{$++1}))(?!\d))+/$1-$+/g; return $_; }
The negative look-behind at the beginning and the negative look-ahead near the end prevent the regex from matching only part of a number, like the second 1 in 11 or the 3 in 30.


Comment on Re: List-to-Range generation
Select or Download Code
Replies are listed 'Best First'.
Re: Re: List-to-Range generation
by japhy (Canon) on Jun 12, 2001 at 04:06 UTC
    D'oh. Thanks. Believe it or not, I use that look-behind and look-ahead method in another regex, to find a number in a string less than a given number.

    japhy -- Perl and Regex Hacker

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others lurking in the Monastery: (14)
As of 2015-07-07 17:36 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (93 votes), past polls