Вопрос по Perl

Ответить
Аватара пользователя
CTAC_P
Уже с Приветом
Сообщения: 6789
Зарегистрирован: Пт июн 01, 2001 4:01 am

Вопрос по Perl

Сообщение CTAC_P »

Помогите составить регулярное выражение, которое проверяет что буквы в строке упорядочены по алфавиту.
Niky
Уже с Приветом
Сообщения: 550
Зарегистрирован: Пт мар 31, 2000 4:01 am
Откуда: Moscow --> Baltimore, MD

Сообщение 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*$/
_alex_
Уже с Приветом
Сообщения: 246
Зарегистрирован: Ср май 08, 2002 1:44 am

Сообщение _alex_ »

Так а функцией не легче сделать? вызвать split, получить массив символов, отсортироватгь и проверить с оригиналом?
Аватара пользователя
CTAC_P
Уже с Приветом
Сообщения: 6789
Зарегистрирован: Пт июн 01, 2001 4:01 am

Сообщение CTAC_P »

_alex_ писал(а):Так а функцией не легче сделать? вызвать split, получить массив символов, отсортироватгь и проверить с оригиналом?

Нет, надо через regexp's
Аватара пользователя
CTAC_P
Уже с Приветом
Сообщения: 6789
Зарегистрирован: Пт июн 01, 2001 4:01 am

Сообщение 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*$/

Не работает :(
catwalk
Сообщения: 11
Зарегистрирован: Ср май 29, 2002 11:16 pm

Сообщение catwalk »

если строка с пробелами, то так:

/^\s*a*\s*b*\s*c*...\s*z*\s*$/i
Niky
Уже с Приветом
Сообщения: 550
Зарегистрирован: Пт мар 31, 2000 4:01 am
Откуда: Moscow --> Baltimore, MD

Сообщение 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*$/

Не работает :(

А на какой строчке не работает?
Аватара пользователя
CTAC_P
Уже с Приветом
Сообщения: 6789
Зарегистрирован: Пт июн 01, 2001 4:01 am

Сообщение CTAC_P »

Все работает, я программу удаленно отлаживаю, по телефону :D
bugfighter
Уже с Приветом
Сообщения: 147
Зарегистрирован: Чт мар 06, 2003 1:40 am

Сообщение 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
Niky
Уже с Приветом
Сообщения: 550
Зарегистрирован: Пт мар 31, 2000 4:01 am
Откуда: Moscow --> Baltimore, MD

Сообщение 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 уже есть такая конструкция " ... ну и т.д ... "? :lol:
bugfighter
Уже с Приветом
Сообщения: 147
Зарегистрирован: Чт мар 06, 2003 1:40 am

Сообщение bugfighter »

Niky - это нигде не сказанно, так как в противном случае были бы даны условия для этой самой сортировки. Ваш вариант спрокойно проглотит AAaaaBBBbCCCd, но не пропустит AaAbBBcCC - в общем, для case sensitive ваш вариант вообще себя ведёт, более чем странно мягко говоря. Если уж и сортировать с учётом регистра, то лучше что-то типа A*B*C*.... a*b*c* и т.п. (набирать полные строки мне недосуг)
Niky
Уже с Приветом
Сообщения: 550
Зарегистрирован: Пт мар 31, 2000 4:01 am
Откуда: Moscow --> Baltimore, MD

Сообщение 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 не пройдет, что действительно более чем странно, мягко говоря.
Ответить

Вернуться в «Вопросы и новости IT»