Страница 1 из 1
Вопрос по Perl
Добавлено: Чт окт 30, 2003 11:01 am
CTAC_P
Помогите составить регулярное выражение, которое проверяет что буквы в строке упорядочены по алфавиту.
Добавлено: Чт окт 30, 2003 11:14 am
Niky
Так?
/^A*a*B*b*C*c*D*d*E*e*F*f*G*g*H*h*I*i*J*j*K*k*L*l*M*m*N*n*O*o*P*p*Q*q*R*r*S*s*T*t*U*u*V*v*W*w*X*x*Y*y*Z*z*$/
Добавлено: Чт окт 30, 2003 11:41 am
_alex_
Так а функцией не легче сделать? вызвать split, получить массив символов, отсортироватгь и проверить с оригиналом?
Добавлено: Чт окт 30, 2003 11:48 am
CTAC_P
_alex_ писал(а):Так а функцией не легче сделать? вызвать split, получить массив символов, отсортироватгь и проверить с оригиналом?
Нет, надо через regexp's
Добавлено: Пт окт 31, 2003 5:19 pm
CTAC_P
Niky писал(а):Так?
/^A*a*B*b*C*c*D*d*E*e*F*f*G*g*H*h*I*i*J*j*K*k*L*l*M*m*N*n*O*o*P*p*Q*q*R*r*S*s*T*t*U*u*V*v*W*w*X*x*Y*y*Z*z*$/
Не работает

Добавлено: Пт окт 31, 2003 5:46 pm
catwalk
если строка с пробелами, то так:
/^\s*a*\s*b*\s*c*...\s*z*\s*$/i
Добавлено: Пт окт 31, 2003 6:42 pm
Niky
CTAC_P писал(а):Niky писал(а):Так?
/^A*a*B*b*C*c*D*d*E*e*F*f*G*g*H*h*I*i*J*j*K*k*L*l*M*m*N*n*O*o*P*p*Q*q*R*r*S*s*T*t*U*u*V*v*W*w*X*x*Y*y*Z*z*$/
Не работает

А на какой строчке не работает?
Добавлено: Пт окт 31, 2003 7:11 pm
CTAC_P
Все работает, я программу удаленно отлаживаю, по телефону

Добавлено: Вс ноя 02, 2003 1:49 pm
bugfighter
Niky писал(а):Так?
/^A*a*B*b*C*c*D*d*E*e*F*f*G*g*H*h*I*i*J*j*K*k*L*l*M*m*N*n*O*o*P*p*Q*q*R*r*S*s*T*t*U*u*V*v*W*w*X*x*Y*y*Z*z*$/
Проще и лучше так:
/^a*b*c* ... ну и т.д ... z*$/i
Добавлено: Пн ноя 03, 2003 10:34 am
Niky
bugfighter писал(а):Niky писал(а):Так?
/^A*a*B*b*C*c*D*d*E*e*F*f*G*g*H*h*I*i*J*j*K*k*L*l*M*m*N*n*O*o*P*p*Q*q*R*r*S*s*T*t*U*u*V*v*W*w*X*x*Y*y*Z*z*$/
Проще и лучше так:
/^a*b*c* ... ну и т.д ... z*$/i
Проще - да. Лучше - нет. Где сказано, что сортировка должна быть case insensitive?
P.S.: а что, в Perl уже есть такая конструкция " ... ну и т.д ... "?

Добавлено: Пн ноя 03, 2003 12:01 pm
bugfighter
Niky - это нигде не сказанно, так как в противном случае были бы даны условия для этой самой сортировки. Ваш вариант спрокойно проглотит AAaaaBBBbCCCd, но не пропустит AaAbBBcCC - в общем, для case sensitive ваш вариант вообще себя ведёт, более чем странно мягко говоря. Если уж и сортировать с учётом регистра, то лучше что-то типа A*B*C*.... a*b*c* и т.п. (набирать полные строки мне недосуг)
Добавлено: Пн ноя 03, 2003 2:49 pm
Niky
bugfighter писал(а):Niky - это нигде не сказанно, так как в противном случае были бы даны условия для этой самой сортировки.
Ну стало быть у нас с Вами разные параметры по умолчанию

.
bugfighter писал(а):Ваш вариант спрокойно проглотит AAaaaBBBbCCCd, но не пропустит AaAbBBcCC - в общем, для case sensitive ваш вариант вообще себя ведёт, более чем странно мягко говоря.
Это как раз нормальное поведение для dictionary order, case sensitive: A<a<B...
bugfighter писал(а):Если уж и сортировать с учётом регистра, то лучше что-то типа A*B*C*.... a*b*c* и т.п. (набирать полные строки мне недосуг)
А вот это уже binary order, case sensitive. В этом случае даже AAaaaBBBbCCCd не пройдет, что действительно более чем странно, мягко говоря.