Задача 5. Найти в тексте слова, состоящие из пятнадцати букв.
Решение. По аналогии с задачей 1, казалось бы, можно выполнить поиск по тексту со следующим шаблоном в поле «Найти»:<???????????????>. Однако с таким шаблоном будут совпадать не только слова, но и словосочетания:GREAT EXPECTATIONS by Charles Dickens..., My father's family name being Pirrip... и т. д.
Это не то, что требовалось, однако никакой ошибки нет. Дело в том, что подстановочный знак ? означаетлюбой символ — не только букву, но и цифру, и знак препинания, и даже пробел или знак абзаца («красную строку»). Таким образом, конструкция<???????????????> читается: начало слова, за которым следует пятнадцать любых символов (необязательно букв), за которыми следует конец слова (необязательно того же самого слова). Легко видеть, что найденные сочетания слов действительно состоят из пятнадцати символов, начинаются в начале одного слова и заканчиваются в конце другого.
Как исправить конструкцию, ясно из решения задачи 3 — можно перечислить все буквы латинского алфавита в квадратных скобках[abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ] и повторить эти скобки 15 раз.
Разумеется, вводить такую длинную строку в поле «Найти» очень неудобно. Её можно существенно сократить, воспользовавшись двумя приёмами. Во-первых, подряд идущие в алфавите буквы внутри квадратных скобок можно заменять первой и последней буквой диапазона, записанными через дефис: [a-zA-Z]. Во-вторых, вместо многократного повторения некоторого символа (обычного или подстановочного) можно написать его один раз, и следом за ним указать в фигурных скобках количество повторений:[a-zA-Z]{15}.
Таким образом, шаблон поиска примет вид: <[a-zA-Z]{15}>.
Задача 6. Найти в тексте все слова с префиксом иn- и суффиксом-ness (существительные, образованные от прилагательных с семой отрицания).
Решение. Если бы длина искомых слов была известна, то задачу можно было бы решить по аналогии с предыдущими. Пусть, например, длина слова 10 букв. Префикс иn- состоит из двух букв, суффикс -ness — из четырёх, соответственно, на долю корневой морфемы остаётся 10 - (2 + 4) = 4 буквы, и в поле «Найти» следует ввести шаблон поиска<un[a-z){4}ness>. Это действительно работает: первое найденное слово — uneasiness: ...in my first uneasiness and discontent I had turned to her for help, as a matter of course...
Но длина искомого слова (а следовательно, и корневой морфемы) нам неизвестна, поэтому какое число записать в фигурных скобках — непонятно. В такой ситуации следует вместо фигурных скобок использовать знак @: <un[a-z]@ness>. Вся конструкция читается так: искать начало слова, после которого идут буквы и и n, после которых идёт одна или несколько строчных английских букв, после которых идут буквы n, е, s и s, после которых идёт конец слова.
Остаётся учесть тот факт, что слово может начинаться не только со строчной буквы, но и с заглавной буквы U. Таким образом, итоговый шаблон поиска будет выглядеть следующим образом:<luU]n[a-z]@ness>.
Задача 7. Сколько в тексте слов с префиксами in-, ir-, im-, ип- и суффиксом -1у (отрицательных наречий)?
Решение.Задача отличается от предыдущей тем, что искомое слово может начинаться с одного из нескольких отрицательных префиксов:in-, ir-, im- илиип-. Перечислить их в квадратных скобках (типа[inirimun]) нельзя, потому что в тексте на месте квадратных скобок должен быть толькоодин из перечисленных в скобках символов [конструкция[inirimun] эквивалентна, например, такой:[imrun]— ни повтор символов, ни порядок их следования внутри квадратных скобок роли не играют).
Выходом может быть шаблон следующего вида: <[iulU][mnr][a-z]@ly>. Разумеется, в этом случае будут найдены также слова с «префиксами»иr- иum-, если гаковые окажутся в тексте. Кроме того, будут найдены слова типаimply иunexpectedly, но
формально они удовлетворяют заданным критериям поиска, поэтому с ними ничего поделать нельзя.
Ответ. 157, включая «лишние» слова, формально похожие на отрицательные наречия.
Задача 8. Есть ли в тексте слова с кластером из пяти согласных букв?
Решение. Задача сводится к поиску пяти идущих подряд согласных букв. В условии не сказано, что кластер должен быть строго в начале, в середине или в конце слова, поэтому «привязку» к границам слова (с использованием подстановочных знаков < и >) делать не нужно.
Итоговый шаблон поиска будет иметь следующий вид: [bcdfghjklmnpqrstvwxzBCpFGHJKLMNPQRSTVWXZ]{5}.