Andrew Gaffney <[EMAIL PROTECTED]> wrote:
> Too literally. Basically, I'm trying to match a word that
> contains a mix of >=2 numbers (possibly next to each other)
> and letters. My current regex is:
>
> \b\d*[a-zA-Z]*(\d+[a-zA-Z]+)+\d*[a-zA-Z]*[^:,]\b
>
> but that seems to catch too much.
Ever considered doing this w/o a regex? Maybe it would be
easier to split the text into words first, and then count
letters and numbers using tr//, like
#!/usr/bin/perl -w
sub badword {
my $word = shift;
return $word =~ tr/a-zA-Z/ / >= 2 && $word =~ tr/0-9/ / >= 2;
}
my $text = 'I confess to 0wn1ng the email address [EMAIL PROTECTED]';
foreach my $word (split /\s+/, $text){
print "bad: $word\n" if badword( $word );
}
__END__
HTH,
Thomas
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
<http://learn.perl.org/> <http://learn.perl.org/first-response>