Совпадение со строками, содержащими заглавные буквы, но не полностью состоящими из них
1,00
р.
р.
Задача из книжки. Написать регулярку, которая проверяет соответствие строковой переменной правилу: есть хотя бы одна буква в верхнем регистре есть хотя бы одна буква в нижнем регистре эти 2 символа идут подряд, порядок не имеет значения Для простоты, считаем, что строки не содержат переводов строк. Я написал что-то такое: /[a-z]*[A-Z]+[a-z]*/ или /[a-z]*[A-Z]+[a-z]+/ Предлагается потестить на строках типа "fred", "Fred" и "frEd". Я нашел одно слово, с которым данный шаблон не совпадает, это "freD". Как обобщить регулярку на все возможные строки? Ответ в книге про перл еще хуже, чем мое решение.
Ответ /([a-z][A-Z])|([A-Z][a-z])/ Разве это не в точности соответствует поставленному условию? foreach (qw/fred FRED fRed Fred freD 1234/) { if (/([a-z][A-Z])|([A-Z][a-z])/) { print "$_ - ok " } else { print "$_ - bad " } } вывод: fred - bad FRED - bad fRed - ok Fred - ok freD - ok 1234 - bad П.С. Круглые скобки в регулярке - необязательны, но я предпочитаю их ставить в такой ситуации.