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>


Reply via email to