Главная / Программирование /
Регулярные выражения Perl и их применение / Тест 12
Регулярные выражения Perl и их применение - тест 12
Упражнение 1:
Номер 1
Какое значение получит переменная $1
после выполнения оператора'abc123def' =~ /(abc)(??{ '(\d+)' })/;
Ответ:
 (1) abc
 
 (2) 123
 
 (3) undefined
 
Номер 2
Какое значение получит переменная $1
после выполнения оператора'abc123def' =~ /abc(??{ '(\d+)' })(def)/;
Ответ:
 (1) 123
 
 (2) def
 
Номер 3
Какое значение получит переменная $1
после выполнения оператора'abc123def' =~ /(abc(??{ '(\d+)' })def)/;
Ответ:
 (1) abc123
 
 (2) 123
 
 (3) undefined
 
Упражнение 2:
Номер 1
Имеется примерно такой текст: $_='5XXXXX'
, где сначала идет число n
и за ним n
символов X
. Какие регулярные выражения соответствуют всему этому тексту?
Ответ:
 (1) /(\d+)(??{ 'X' x $1 })/
 
 (2) '5XXXXX' =~ /(\d+)(??{ "X{$1}" })/
 
 (3) '5XXXXX' =~ /(\d+)(??{ 'X{$1}' })/
 
Номер 2
Имеется примерно такой текст: $_='XXXXX5'
, где сначала идут n
символов X
, а за ними число n
. Какие регулярные выражения соответствуют всему этому тексту?
Ответ:
 (1) 'XXXXX5' =~ /(X+)(??{ length($1) })/
 
 (2) 'XXXXX5' =~ /(X+)(??{ 'length($1)' })/
 
 (3) 'XXXXX5' =~ /(X+)(??{ "length($1)" })/
 
Номер 3
Имеется примерно такой текст: $_='5XXXXX'
, где сначала идет число n
и за ним n
символов X
. Какие регулярные выражения соответствуют всему этому тексту?
Ответ:
 (1) '5XXXXX' =~ /(\d+)(??{ 'X' x \1 })/
 
 (2) '5XXXXX' =~ /(\d+)(??{ 'X' x length($1) })/
 
 (3) '5XXXXX' =~ /(\d+)(??{ X{$1} })/
 
Упражнение 3:
Номер 1
Строка в $_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
Ответ:
 (1) /^(?:(?>(\d+))(??{ $n < $1 ? ',' : '(?!)' })(?{ $n=$1 }))+$/
 
 (2) /^(?:(?>(\d+))(??{ $n < $1 ? ',|$' : '(?!)' })(?{ $n=$1 }))+$/
 
 (3) /^(?:(?>(\d+))(??{ $n < $1 ? ',' : '(?!)' })(?{ $n=$1 }),)+$/
 
Номер 2
Строка в $_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
Ответ:
 (1) /^(?:(?>(\d+))(??{ $n < $1 ? ',|\z' : '(?!)' })(?{ $n=$1 }))+$/
 
 (2) /^(?:(?>(\d+))(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+$/
 
 (3) /^(?:(?>(\d+))(??{ $n <= $1 ? ',|$' : '(?!)' })(?{ $n=$1 }))+$/
 
Номер 3
Строка в $_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
Ответ:
 (1) /^(?:(\d+)(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+$/
 
 (2) /^(?:(\d+)(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+\z/
 
 (3) /^(?:(\d+)(??{ $n < $1 ? '$|,' : '(?!)' })(?{ $n=$+ }))+\z/
 
Упражнение 4:
Номер 1
Какие операторы возвращают истину?
Ответ:
 (1) 'XXX' =~ /^(??{ join '',(X,X,X) })$/
 
 (2) 'XXX' =~ /^(??{ (X,X,X) })$/
 
 (3) 'XXX' =~ /^(??{ "\Uxxx" })$/
 
Номер 2
Какие операторы возвращают истину?
Ответ:
 (1) 'XXX' =~ /^(??{ '\Uxxx' })$/
 
 (2) 'XXX' =~ /^(??{ my $a='XXX' })$/
 
 (3) 'XXX' =~ /^(??{ my $a='XXX'; $a })$/
 
Номер 3
Какие операторы возвращают истину?
Ответ:
 (1) '123' =~ /^(??{ 123 })$/
 
 (2) '123' =~ /^(??{ '123' })$/
 
 (3) '123' =~ /^(??{ 124-1 })$/
 
 (4) '-123' =~ /^(??{ 1-124 })$/
 
Упражнение 5:
Номер 1
Какие операторы возвращают истину?
Ответ:
 (1) 'ABC' =~ /^(??{ "(?i)[a-z]+" })$/
 
 (2) 'ABC' =~ /^(?i)(??{ "[a-z]+" })$/
 
 (3) 'ABC' =~ /^(??{ "[a-z]+" })$/i
 
Номер 2
Какие операторы возвращают истину??
Ответ:
 (1) 'ABCD' =~ /^(??{ "(?i)abc" })D$/
 
 (2) 'ABCD' =~ /^(??{ "(?i)abc" })d$/
 
 (3) 'ABCD' =~ /^(??{ "\Uabc" })d$/
 
Номер 3
Какие операторы возвращают истину?
Ответ:
 (1) 'ABCD' =~ /^(??{ "\Uabc" })D$/
 
 (2) 'ABCD' =~ /^(??{ "\QABC" })D$/
 
 (3) /^(??{ "(?i)\lABC" })D$/
 
Упражнение 6:
Номер 1
Какие операторы возвращают истину?
Ответ:
 (1) 'ABC' =~ /^(??{ "ABC\$" })/
 
 (2) my $a='$'; 'ABC' =~ /^(??{ "ABC$a" })/
 
 (3) my $a="\$"; 'ABC' =~ /^(??{ "ABC$a" })/
 
Номер 3
Укажите относительный URI:
Ответ:
 (1) 'ABC' =~ /^(??{ 'ABC\\Z' })/
 
 (2) 'ABC' =~ /^(??{ 'ABC\\z' })/
 
 (3) 'ABC' =~ /^(??{ 'ABC\$' })/