in reply to Re: Regular expression patter matching question
in thread Regular expression pattern matching question

For what it's worth, the next version of Regexp::Assemble (v0.24) will be able to do the following

$ perl -le 'print $_ for 4333 .. 9999' | \PERL5LIB=blib/lib assemble (?:4(?:3(?:3[3456789]|[456789]\d)|[456789]\d\d)|[56789]\d\d\d)

... in 1.3 seconds on hardware a couple of years old.

If I get the warnings to stop, I'll throw in japhy's mind-bendingly marvellous list-to-range regexp which will allow it to get that down to:

(?:4(?:3(?:3[3-9]|[4-9]\d)|[4-9]\d\d)|[5-9]\d\d\d)

... which, interestingly enough, looks as if it arrives at the same conclusion as you, which is a nice validation, thanks :)

• another intruder with the mooring in the heart of the Perl

Replies are listed 'Best First'.
Re^3: Regular expression patter matching question
by diotalevi (Canon) on Jan 19, 2006 at 21:34 UTC

    The statement "too large" was ambiguous. Regexp::List->new->list2re(4333..9999) makes an 8K regexp.

    ⠤⠤ ⠙⠊⠕⠞⠁⠇⠑⠧⠊