in reply to Anything else is fine!
#!/usr/bin/perl use strict; use warnings; my @bad_strings = qw(ee); my @good_strings = qw(ef); foreach (@bad_strings) { print "$_ failed\n" if /(.)(?!\1|$)/; } foreach (@good_strings) { print "$_ failed\n" if not /(.)(?!\1|$)/; }
The regular expression works as follows:
Update: Just noticed the bit about $&. The above code will store '.' in $& for your example. If you want to include both characters, you can append an additional '.' to the end of the regular expression, but note that this will consume two characters and hence removes the opportunity to also match '+.' for your sample. Rather than using $&, you may consider using $-[0] (see @ ) combined with substr. If you are only interested in the first match, you may want to wrap the entire expression in parentheses as per BrowserUK's suggestion below.
|
|---|