On Tue, Nov 18, 2003 at 01:52:39PM +0100, Wouter van Vliet wrote:
: Eugene Lee suggested:
: > On Tue, Nov 18, 2003 at 01:15:32PM +0100, Adam i Agnieszka
: > Gasiorowski FNORD wrote:
: > :
: > : There is an array of regexes, for example
: > :
: > : $array = array('moon', '[wh]ood', '[^as]eed' ...
: > : (about 300 entries).
: > :
: > : I want to sort it comparing to the
: > : character lenght of a regex. For example
: > : [wh]ood is 4 characters, moon is 4 characters.
: > : There are only letters of the alphabet and
: > : letter ranges present in those regexes. I
: > : want the "longest" ones first.
: > :
: > : How would you write the sorting function?
: >
: > This might be the most functionally correct, although it's definitely
: > not the fastest route.
: >
: > function re_len($pat)
: > {
: > return strlen(preg_replace('/\[[^]]+]/', '_', $pat));
:
: I think you meant:
:
: /\[[^\]]+]/
:
: as regex ;) Not sure, but I think one more block-bracked needed to be
: escaped ;)
Nope. My pattern is legitimate. Within a range, if the first character
is a closing-square-bracket ']', it is treated as the literal character
and not as the end of range. If the range starts with a negation '^',
then the same rule applies to the second character.
This is also a sad indication that I really know my regular expressions,
or I need a vacation. :-)
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php