in reply to Re: Re: Re: Re: Re: $_ works, $my_variable doesn't?
in thread $_ works, $my_variable doesn't?

In my defense, neither did the code I was referring to.

That is an interesting question - is there a way to have a regex take a character class and determine if the string contains all the characters in the class?

------
We are the carpenters and bricklayers of the Information Age.

Then there are Damian modules.... *sigh* ... that's not about being less-lazy -- that's about being on some really good drugs -- you know, there is no spoon. - flyingmoose

  • Comment on Re: Re: Re: Re: Re: Re: $_ works, $my_variable doesn't?

Replies are listed 'Best First'.
Re^7: $_ works, $my_variable doesn't?
by revdiablo (Prior) on Mar 30, 2004 at 18:10 UTC

    Yes, the original mistake was mine. I have since updated that node. I don't know any slick way of putting it all in one character class, though with lookahead it could be wedged into one regex.

    Update: here's my first shot at a lookahead version:

    my @strings = qw( aaaaa eeeee iiiii abcde aeiou bdfhj ); my $range = 'AaEeIiOoUu'; my $alt = join '|', split //, $range; my %regexes = ( alternation => qr/$alt/, class => qr/[$range]/, lookahead => qr/([$range])((?!\1)[$range])((?!\2)[$range])((?!\3 +)[$range])((?!\4)[$range])/, ); foreach my $string (@strings) { print "$string:\n"; while (my ($k, $r) = each %regexes) { print "\t$k - " . ($string =~ /$r/ ? 'YES' : 'NO') . $/; } }

    And the output:

    aaaaa: alternation - YES class - YES lookahead - NO eeeee: alternation - YES class - YES lookahead - NO iiiii: alternation - YES class - YES lookahead - NO abcde: alternation - YES class - YES lookahead - NO aeiou: alternation - YES class - YES lookahead - YES bdfhj: alternation - NO class - NO lookahead - NO