Возможно, вы захотите позаботиться о том, что считать буквой, и это зависит от вашей локали. Использование ISO Latin-1 позволит сочетать символы ударения на западном языке в виде букв. В следующей программе локаль по умолчанию не распознает é, и, таким образом, créé не соответствует. Раскомментируйте код настройки локали, и он начнет совпадать.
Также обратите внимание, что \ w включает в себя цифры и символ подчеркивания, а также все буквы. Чтобы получить только буквы, вам нужно взять дополнение не алфавита, цифр и символов подчеркивания. Это оставляет только буквы.
Это может быть легче понять, обрамляя его как вопрос "Какое регулярное выражение соответствует любой цифре, кроме 3?", И ответ - /[^\D3]/.
#! /usr/local/bin/perl
use strict;
use warnings;
# uncomment the following three lines:
# use locale;
# use POSIX;
# setlocale(LC_CTYPE, 'fr_FR.ISO8859-1');
while (<DATA>) {
chomp;
if (/([^\W_0-9])\1+/) {
print "$_: dup [$1]\n";
}
else {
print "$_: nope\n";
}
}
__DATA__
100
food
créé
a::b