лекции, учебные пособия / материалы к собеседованию / Домашнее задание 3
.docx
Домашнее задание 3
Знакомство с регулярными выражениями. Perl.
Работу выполнил
Студент гр. 2100
Голубцов Евгений
2008
Задание 1:
Пусть переменная var имеет значение abc123. Определите, что возвращают следующие выражения - true или false.
1)$var =~ /./
2)$var =~ /[A-Z]*/
3)$var =~ /(\d)2(\1)/
4)$var =~ /abc$/
5)$var =~ /1234?/
1)true
Символ точка соответствует любому символу в данной позиции, т.е. в данном случае все значения с любым первым символом, т.к. далее ничего нет то вообще любых выражений.
2)true
[A-Z] – соответствует любой заглавной букве, * - повторение символа от 0 до бесконечности раз.
3)false
\1 – переменная от подшаблона (\d), в нашем случае получается значение 121.
4)false
$-привязка к концу строки.
5)true
?- соответствует 1 или 0 вхождений, т.е. может быть 1234 или 123.
Задание2:
Пусть $var имеет значение abc123abc. Какое значение примет $var после следующих подстановок?
1)$var =~ s/abc/def/;
2)$var =~ s/[a-z]+/X/g;
3)$var =~ s/B/W/i;
4)$var =~ s/(.)\d.*\1/d/;
5)$var =~ s/(\d+)/$1*2/e;
Оператор s/PATTERN/REPLACEMENT/ производит поиск строки, соответствующей шаблону PATTERN и если строка найдена, то подстановку на ее место текста REPLACEMENT.
Этот оператор используется со следующими опциями:
e интерпретирует правую часть как выражение.
g производит подстановку на место каждой строки, соответствующей шаблону.
i производит поиск различающий большие и маленькие буквы.
m обрабатывает строку, как состоящую из нескольких строк.
o происходит подстановка только на место первой встреченной строки.
s обрабатывает строку, как состоящую только из одной строки.
x использует расширенные регулярные выражения.
1)$var=def123abc
2)$var=X123X;
[a-z]+ - повторение строчных символов 1 и более раз.
3)$var=aWc123abc
i – поиск различает строчные и заглавные буквы.
4)$var=abd
5)$var=abc246abc
e - интерпретирует правую часть как выражение, ищем числовое значение и умножаем его на 2. (123*2)
Задание 3:
Чему соответствуют следующие шаблоны?
1)/a|bc*/
2)/[\d]{1,3}/
3)/\bc[aou]t\b/
4)/(xy+z)\.\1/
5)/^$/
1)a|b – либо a либо b, т.е. ищет совпадение на ac* или bc*.
2){1,3} – повторение от 1 до 3 раз, т.е. любое число из 1, 2 или 3 символов.
3)\b - граница слова, т.е. слово начинающееся с буквы с затем один из символов [aou], затем t
4)x затем, y может повторяться 1 и более раз, затем z, затем точка и повторение подшаблона (xy+z)
5)нулевая строка ‘’, ^-начало строки, $-конец строки.
Задание 4:
Написать шаблоны, соответствующие следующим примерам:
1)не менее 5 маленьких латинских букв
2)цифра 1 или слово "one" (в любом регистре)
3)число, возможно, дробное (с десятичной точкой)
4)любая буква, за которой следует гласная, повторяется еще раз (пример: "pop", "fifth", "daddy")
5)хотя бы один "+"
1)/[a-z]{5,}/
{5,} – повторение не менее 5 раз.
2)/1|one/i
i-поиск в обоих регистрах.
3)/[+-]?\d+\.?\d*/
Число возможно дробное, как положительное так и отрицательное.
4)/([a-zA-Z])[aeiouy](\1)/
Внутри регулярного выражения можно указывать "подшаблоны", заключая их в круглые скобки и ссылаться на них как '\номер' Первая скобка обозначается как '\1'.
5)/[+]/
[ ] - класс символов