Главная /
Программирование /
Регулярные выражения Perl и их применение
Регулярные выражения Perl и их применение - ответы на тесты Интуит
Правильные ответы выделены зелёным цветом.
Все ответы: Подробное неформальное описание синтаксиса и механизма работы регулярных выражений языка Perl с примерами использования от простых к сложным.
Все ответы: Подробное неформальное описание синтаксиса и механизма работы регулярных выражений языка Perl с примерами использования от простых к сложным.
Смотрите также:
Какие операторы удаляют все пробельные символы только в начале текста?
(1)
s/^ +//m
(2)
s/^\s+//g
(3)
s/^ *//m
(4)
s/^\s*//s
(5)
s/\s+?//
(6)
s/\s*?//
(7)
s/^[\t\r\3]*//
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/i;
$a='A';
print 'OK' if 'a' =~ $re;
(1)
OK
(2) ничего
Какое значение получит переменная my $a=10; 'abc123' =~ /((\w)+)(?{ $a=$+ })/;
$a
в результате работы программы
(1)
10
(2)
3
(3)
abc123
Какое значение получит переменная 'abc123def' =~ /(abc)(??{ '(\d+)' })/;
$1
после выполнения оператора
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная 'abc' =~ /(\w)/;
'123' =~ //;
$1
в результате работы программы
(1)
a
(2)
1
(3)
123
Что будет напечатано в результате работы оператораprint join '-', split /^/, "ab\nbc\nde";
(1) ab
bc
de
(2) ab
-bc
-de
Какое число будет захвачено в переменную
$1
в следующем операторе поиска: '12345 1234 123' =~ /(12\d+|123\d+|1\d+)/
?
(1)
12345
(2)
1234
(3)
123
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /\w+?(?=(\d+?))/
?
(1)
1
(2)
123
(3)
undefined
Нужно захватить из текста в переменную
$1
IP-адрес примерно такого формата: 192.64.235.45
. Какой оператор делает это правильно?
(1)
/(\d+.\d+.\d+.\d+)/
(2)
/(\d+.){4}/
(3)
/(\d+.{4})/
(4)
/((\d+|\.)+)/
(5)
/([\d.]+)/
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(\w$)/
?
(1)
c
(2)
3
(3)
c\n
Что выйдет на печать в результате работы программы
$_="123!abc!"; /\G\w+(?{ print pos $_ })!/g
?
(1)
3
(2)
37
(3) ничего напечатано не будет
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; my $a='\d+'; s/$a/!/
?
(1)
abc123
(2)
abc!!!
(3)
abc!
Имеются следующие адреса электронной почты: a-b.c@def.com, a+b@def.co.uk, a$b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?
(1)
[\w\$+.-]+\@[.\w]+
(2)
[\w\$+-.]+\@[.\w]+
(3)
[\w$+\.\-]+\@[.\w]+
Какое значение будет иметь переменная $^R в результате работы программы'abcABC' =~ /(?:([a-z])(?{ $+ })|([A-Z])(?{ $+ }))\Z/?
(1)
c
(2)
B
(3)
C
Какое регулярное выражение соответствуют всей строке
'-123.456'
, которая содержит число?
(1)
/\d+.\d+/
(2)
/^\-\d+\.\d*$/
(3)
^\-?\d+\.\d+$/
(4)
/^[-.\d]+$/
Что будет напечатано в результате работы программыmy $a='(?i)[a-z]';
my $re=qr/$a/;
print 'OK' if 'A' =~ /$re/;
(1)
OK
(2) ничего
Что будет напечатано в результате работы программы'abc123' =~ /((\w)+)/; print join ',', @-;
(1)
0,5
(2)
0,0,5
(3)
0,0
Имеется примерно такой текст:
$_='5XXXXX'
, где сначала идет число n
и за ним n
символов X
. Какие регулярные выражения соответствуют всему этому тексту?
(1)
/(\d+)(??{ 'X' x $1 })/
(2)
'5XXXXX' =~ /(\d+)(??{ "X{$1}" })/
(3)
'5XXXXX' =~ /(\d+)(??{ 'X{$1}' })/
Какое значение получит переменная my $re=qr/(\d)+/;
'123' =~ $re;
'456' =~ //;
$1
в результате работы программы
(1)
3
(2)
6
(3)
4
Что будет напечатано в результате работы оператораprint join '-', split /:/, 'a:b:c:';
(1)
a-b-c-
(2)
a-b-c
Какой фрагмент будет захвачен в строке
'abc 123'
в переменную $1
регулярным выражением /(\w)+$/
?
(1)
123
(2)
23
(3)
3
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /(?<=(\w{2}?))(?!\d+?)/
?
(1)
bc
(2)
ab
(3) пустой фрагмент
(4)
c
Нужно из текста в
$_
захватить в массив @a
все слова, которые состоят только из латинских букв и не содержат букву h
независимо от регистра. В каких вариантах это делается верно?
(1)
my @a=/\b[a-gi-z]+\b/g
(2)
my @a=/[a-gi-zA-IG-Z]+/g
(3)
my @a=/[a-gi-z]+/gi
(4)
my @a=/[A-GI-Z]+/gi
(5)
my @a=/(?i)\b[A-GI-Z]+\b/g
Какое значение получит массив
@a
в результате работы оператора my @a = "abc!abc" =~ /\w+/
?
(1)
(abc)
(2)
() или пусто
(3)
1
Что выйдет на печать в результате работы программы
$_="123!abc!"; pos($_)=4; print /\G(\w+)!/g
?
(1)
123
(2)
abc
(3)
123abc
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; s/\u[a-z]/!/
?
(1)
!Bc
(2)
a!c
(3)
aBc
В $_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href = " mailto: a+b\@de-f.co.uk " >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?
$_
дан текст:
(1)
/<a\s+href\s*=\s*['"]?mailto:([\w+.-]+\@[.\w-]+)/g
(2)
/<a\s+href\s*=\s*['"\s]*mailto:\s*([\w+.-]+\@[.\w-]+)/g
(3)
/<a\s+href\s*=.*?mailto:\s*([\w+.-]+\@[.\w-]+)/g
Какое значение будет иметь переменная my $a=0; 'abcABC' =~ /(?:abc(?{ ++$a })|ABC(?{ ++$a }))/
$a
в результате работы программы
(1)
0
(2)
1
(3)
2
Какие регулярные выражения захватят в
$1
только подстроку 'abc -123'
в строке 'xyz abc -123 uvw'
?
(1)
/\w+(\w+\s+-\d+)/
(2)
/[\w\s]+(\w+\s+[-\d]+)/
(3)
/\S+\s+(\S+\s+[-\d]+)/
Что будет напечатано в результате работы программыmy $a='[a-z]';
my $re=qr'$a';
print 'OK' if 'A' =~ /$re/;
(1) OK
(2) ничего
Что будет напечатано в результате работы программы'abc' =~ /(\w+)/;
{ 'def' =~ /(\w+)/ }
print $1;?
(1)
abc
(2)
def
Строка в
$_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
(1)
/^(?:(?>(\d+))(??{ $n < $1 ? ',' : '(?!)' })(?{ $n=$1 }))+$/
(2)
/^(?:(?>(\d+))(??{ $n < $1 ? ',|$' : '(?!)' })(?{ $n=$1 }))+$/
(3)
/^(?:(?>(\d+))(??{ $n < $1 ? ',' : '(?!)' })(?{ $n=$1 }),)+$/
Какое значение получит переменная my $re=qr/(\d)+/;
'123' =~ $re;
$re=qr/(\d+)/
$1
в результате работы программы
(1)
123
(2)
456
(3)
6
Что будет напечатано в результате работы оператораprint join '-', split //, 'abc';
(1)
a-b-c
(2)
abc
(3)
a-bc
Будут ли возвраты в процессе работы оператора
'abc123' =~ /(?>[a123]+$|\w+$)/
?
(1) да
(2) нет
Что выйдет на печать в результате работы оператора
'abc123' =~ /\w+?(?=(\d+?))(?{ print $1 })/
?
(1)
пустой фрагмент
(2)
undefined
(3)
1
В данном тексте в каждом слове надо от повторяющихся подряд латинских символов оставить ровно один из них, остальное оставить без изменения. Какие операторы делают это правильно?
(1)
s/(.)\1+/$1/g
(2)
s/(\w)\1/$1/g
(3)
s/(\w+)\1/$1/g
(4)
s/(\w)\1+/$1/gi
(5)
s/(\w)\1+/$1/g
(6)
s/(\w+)\1/$1/gi
Какое значение получит переменная
$1
в результате работы программы "abc\n" =~ /\w\Z(.)\z/?
(1)
\n
(2)
undefined
(3)
c
Какое значение получит переменная
$_
в результате работы программы $_="123!abc!"; pos($_)=4; s/\G(\w+)!/x/
?
(1)
123!x
(2)
x!x
(3)
123!x!
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; my $a='[a-z]+'; s/$a/!/
?
(1)
!!!
(2)
!Bc
(3)
!B!
(4)
a!c
В $_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?
$_
дан текст:
(1)
/href=.*?(?:mailto:)?(\S+)>/g
(2)
/href=.*?(?:mailto:)?(\S+?)>/g
(3)
/href=.*?(?:mailto:)?([^>"]+)>/g
Что напечатается в результате работы программыour $a; 'abcABC' =~ /(?{ local $a=0 })(?:abc(?{ ++$a })|ABC(?{ $a+=10 }))(?{ print $a })/
(1)
0
(2)
1
(3)
10
(4)
11
В тексте надо захватить в
$1
фрагмент (может и пустой) от первых до вторых кавычек. Какие операторы делают это правильно?
(1)
/"(.+)"/
(2)
/"(.+)"/s
(3)
/"(.*)"/
(4)
/"(.*?)"/s
(5)
/"([^"]+)"/
(6)
/"([^"]*)"/
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/\$a/;
print 'OK' if '$a' =~ /$re/;
(1)
OK
(2) ничего
Какое значение получит переменная my $a; 'abc' =~ /(\w)+(?{ $a=$+ })
$a
в результате работы программы
(1)
a
(2)
c
(3)
undefined
Какие операторы возвращают истину?
(1)
'XXX' =~ /^(??{ join '',(X,X,X) })$/
(2)
'XXX' =~ /^(??{ (X,X,X) })$/
(3)
'XXX' =~ /^(??{ "\Uxxx" })$/
Что будет напечатано в результате выполнения программыmy $a='a';
$_='ab';
while ($a ne 'd' && /$a/o) { print $&; $a++; }
(1)
abc
(2)
a
(3)
aaa
Что будет напечатано в результате работы программы$a='-';
for (0..1)
{ print split /$a/, 'a-b:c' . "\n";
$a=':';
}
(1)
a-b:c!a-b:c!
(2)
ab:c!ab:c!
(3)
ab:c!a-bc!
Какой фрагмент строки будет захвачен в переменную
$1
в операторе '!1a' =~ /(?>([!\d]+|\S+))$/
?
(1)
!1
(2)
a
(3)
!1a
Какое значение получит переменная
$2
в результате работы программы 'aBc1b23' =~ /a(\w)\w+(\1)/i
?
(1)
пусто
(2)
undefined
(3)
b
(4)
B
В тексте надо заменить все прописные латинские буквы соответствующими строчными. Какие операторы делают это правильно?
(1)
s/\w+/lc $1/ge
(2)
s/(\w)/$1/gei
(3)
s/([A-Z])/$1/gei
(4)
s/([A-Z])/lc $1/g
(5)
s/([A-Z])/lc $1/ge
(6)
s/(\w)/lc $1/ge
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; s/(\d)/$1+100/e
?
(1)
abc123
(2)
abc10123
(3)
abc101102103
Какое значение получит переменная
$1
в результате работы программы $_="123!abc!"; /\w+/g; /(\w+)/
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_='[a-z]+abcABC'; my $a='[a-z]+'; s/\Q$a\E\w+?/!/
?
(1)
[a-z+]!bcABC
(2)
!bcABC
(3)
[a-z]+abcABC
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?
(1)
print "$1\@$2" if /\@.*?=.([^'"]+)[^'"]+['"]([^'"]+)/
(2)
print "$1\@$2" if /\@.*?=.([^'"]+)[^'"]+['"]([^'"]+)/s
(3)
print "$1\@$2" if /\@.*?=.([^'"]+).[^'"]+['"]([^'"]+)/s
Какое значение примет переменная my $n; $_='abc ab abcd'; /(?<!\w)(\w+)(?{$n=$+ if !defined($n) || $n lt $+})(?!)/?
$n
в результате работы программы
(1)
ab
(2)
abc
(3)
abcd
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в
$1
имя файла. Какие операторы делают это правильно?
(1)
/.*\(.+)/
(2)
/.*\\(.+)/
(3)
/.+\\(.*)/
(4)
/.*?\\(.*)/s
(5)
/.*\\(.*?)/s
(6)
/\\(.*)/s
Что будет напечатано в результате работы программыmy $re=qr/(ab)c/; print $1.$2 if 'abcabc' =~ /$re+$re+/;
(1) ничего
(2)
ab
(3)
abab
Что будет напечатано в результате работы программы$_='abc123def';
/\d+/;
print substr $_, 0, $-[0];
(1)
abc
(2)
123
(3)
def
Какие операторы возвращают истину?
(1)
'ABC' =~ /^(??{ "(?i)[a-z]+" })$/
(2)
'ABC' =~ /^(?i)(??{ "[a-z]+" })$/
(3)
'ABC' =~ /^(??{ "[a-z]+" })$/i
Что будет напечатано в результате выполнения программыmy ($a,$b)=('a','a');
while ($a ne 'd' && $b =~ /(??{ "$a" })/o) { print $&; $a++; $b++; }
(1)
aaa
(2)
a
(3)
abc
Что будет напечатано в результате работы оператораprint join '-', split 1+1, 'a1b2c';
(1)
a1b2c
(2)
a1b-c
(3)
a-b2c
Будет ли найдено совпадение в операторе
'abc' =~ /(?>|\S+)/
?
(1) да
(2) нет
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /^(\w+?)(?(1)\s\d+)/
?
(1)
c
(2)
abc
(3)
undefined
(4) пустой фрагмент
В тексте есть число, которое может быть целым, а может иметь точку (в этом случае обязательна дробная часть). Число может стоять в конце предложения, и поэтому за ним может быть точка. Предполагаем, что в тексте нет таких конструкций, как дата
2006.12.26
, которую можно было бы спутать с дробным числом. Примеры чисел: +1, -2.5, -.010. Надо захватить в $1
первое такое число. Какие операторы делают это правильно?
(1)
/([+-]?(?:\d+(?:\.\d+)?)/
(2)
/([+-]?(\d+(\.\d+)?|\.\d+))/
(3)
/([+-]?(?:\d+(?:\.\d+)?|\.\d+))/
(4)
/([+-]?(\d*\.*\d*)/
(5)
/([+-]?(\d*\.*\d+)/
(6)
/(?:[+-]?(\d*\.*\d*)/
Какое значение получит переменная
$1
в результате работы программы "abc123" =~ /(123|abc)$/
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_="123"; s//!/g
?
(1)
1!2!3!
(2)
!1!2!3!
(3)
!1!2!3
Какое значение получит переменная
$_
в результате работы программы $_='abcABC'; my $re=qr'[a-z]+'i; s/(?-i)$re/!/
?
(1)
!ABC
(2)
!
(3)
abc!
В переменной <html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?
$_
находится HTML-страница. Надо проверить, есть ли у этой страницы часть head
, и если есть, то есть ли внутри контейнера <head> </head>
тег <base href="…">
. Если он есть, то переменной $base
надо присвоить этот URL из части head
документа. Если в head
нет тега base
, то ничего делать не надо. Пример текста страницы:
(1)
$base=$1 if m#<head[^>]*>.*<base\s+href\s*=\s*['"]?([^'">\s]+)#i
(2)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is
(3)
$base=$1 if m#<head[^>]*>(?>(?!<base).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is
Какое значение получит переменная 'ab!abc!' =~ /(\w+)!(?(?{ $1 eq 'abc' })(\w+)|(?{ $1 ne 'ab' }))/
$^R
в результате работы программы
(1) пусто
(2)
undefined
(3)
1
Какие регулярные выражения захватят в
$1
подстроку '-123abc'
, а в $2
- подстроку '1+2abc'
из строки '1-2ab -123abc a1 1+2abc'
?
(1)
/([-123\w]+)\s+(\S+)/
(2)
/\S+\s+(\S+)\s+(\S+)/
(3)
/(\S+c)\s+\S+\s+([+\w]*)/
Что будет напечатано в результате работы программыmy $re=qr'(\w+)c'; print $1 if 'abcabc' =~ /$re+/;
(1) ничего
(2)
c
(3)
abcab
Какое значение получит переменная $_='abc123def';
/(\w+)/;
/\d+(\d+)/;
$1
в результате работы программы
(1)
abc
(2)
23
(3)
3
Какие операторы возвращают истину?
(1)
'ABC' =~ /^(??{ "ABC\$" })/
(2)
my $a='$'; 'ABC' =~ /^(??{ "ABC$a" })/
(3)
my $a="\$"; 'ABC' =~ /^(??{ "ABC$a" })/
Что будет напечатано в результате выполнения программыuse re 'eval';
my $a=$b=1;
while ($a < 4 && $b =~ /(?{ ++$a })$a/) { print $&; $b++; }
(1) ничего
(2)
123
(3)
1
Что будет напечатано в результате работы оператораprint join '-', grep /\d/, qw/a 1 b 2 c/;
(1)
a-1-b-2-c
(2)
1-2
(3)
a-b-c
Какой текст будет захвачен, соответственно, в переменную
$1
и $2
следующим оператором: 'abcd' =~ /(\w+)(\w+)/
?
(1)
a
и bcd
(2)
abc
и d
(3)
ab
и cd
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(.*)/
?
(1)
abc\n123
(2)
abc
(3) пустой фрагмент
Какое значение получит массив
@a
в результате работы программы my @a="abc\n123" =~ /\w+/g
?
(1)
(abc)
(2)
() или пусто
(3)
(abc, 123)
Какое значение получит переменная
$1
в результате работы программы "123abc" =~ /(\d)?\d+(?(1)abc)/
?
(1)
1
(2) пусто
(3)
undefined
Какое значение получит переменная
$1
в результате работы программы "123" =~ /\G(?=\d)(\d)/g
?
(1)
1
(2)
2
(3)
3
Какое значение получит переменная
$_
в результате работы программы $_='abcABCdefDEF'; my $re=qr'[A-Z]+'; s/${re}defDEF/!/gi
?
(1)
abc!defDEF
(2)
abc!
(3)
abcABCdefDEF
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?
(1)
print join "\n", m#<a\s+href=.*?(http://[^"]+)#
(2)
print join "\n", m#<a\s+href=.*(http://[^"]+)#g
(3)
print join "\n", m#<a\s+href=.*?(http://[^"]+)#gi
Какое значение примет переменная 'ab!abc!a!' =~ /(\w+)!(\w+)!(?(?{ $1 gt $2 })$)/
$2
в результате работы программы
(1)
a
(2)
ab
(3)
abc
Какие операторы удаляют все пробельные символы только в конце текста?
(1)
s/\s+$//m
(2)
s/\s*$//m
(3)
s/\s*$//
(4)
s/\s+\Z//
(5)
s/\s+?$//
(6)
s/\s*\z//
(7)
s/\s*?\Z//
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/i;
$a='A';
print 'OK' if 'A' =~ $re;
(1)
OK
(2) ничего
Какое значение получит переменная my $a=10; 'abc123' =~ /((\w)+)(?{ $a=$^N})/;
$a
в результате работы программы
(1)
10
(2)
3
(3)
abc123
Какое значение получит переменная 'abc123def' =~ /abc(??{ '(\d+)' })(def)/;
$1
после выполнения оператора
(1)
123
(2)
def
Какое значение получит переменная 'abc' =~ /(?>(\w+))\w/;
'123' =~ //;
$1
в результате работы программы
(1)
ab
(2)
12
(3)
undefined/
Что будет напечатано в результате работы оператораprint join '-', split /^/m, "ab\nbc\nde";
(1) ab
bc
de
(2) ab
-bc
-de
Какое слово будет захвачено в переменную
$1
в следующем операторе поиска: 'abcde abcd abc' =~ /(ab\w+|abc\w+|a\w+)/
?
(1)
abcde
(2)
abcd
(3)
abc
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /\w+?(?!(\d+?))/
?
(1)
1
(2)
123
(3)
undefined
Нужно захватить в
$1
и $2
первые два целых числа из текста, которые там имеются. Какие операторы делают это правильно?
(1)
/(\d+)(\d+)/
(2)
/(\d+).+(\d+)/
(3)
/(\d+).*(\d+)/s
(4)
/(\d+)\D+(\d+)/
(5)
/\b(\d+)\D+(\d+)\b/
(6)
/(\d+?)\D+(\d+)/
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(\w$)/m
?
(1)
c
(2)
3
(3)
c\n
Что выйдет на печать в результате работы программы
$_="123!abc!"; print /\G\w+(?{ print pos $_ })!/g
?
(1)
3
(2)
37
(3)
37123!abc!
(4)
371
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; my $a='[a-z]+'; s/$a/!/
?
(1)
abc123
(2)
!!!123
(3)
!123
Имеются следующие адреса электронной почты: ab.c@def.com, a+b@de-f.co.uk, a-b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?
(1)
[\w.+-]+\@[.\w-]+
(2)
[\w+-.]+\@[.\w-]+
(3)
[\w$.-+]+\@[.\w-]+
Какое значение будет иметь переменная 'abcABC' =~ /(?:([a-z])(?{ $^N })|([A-Z])(?{ $^N }))(?(?{ $1 })ABC)\Z/;
$^R
в результате работы программы
(1)
c
(2)
B
(3)
C
Какие регулярные выражения соответствуют всей строке
'abc123'
?
(1)
/\w+\d/
(2)
/\d*\w+/
(3)
/\w*\d+/
(4)
/[a-c\d]*/
Что будет напечатано в результате работы программыmy $a='[a-z]';
my $re=qr/$a/;
print 'OK' if 'A' =~ /$re/;
(1) OK
(2) ничего
Что будет напечатано в результате работы программы'abc123' =~ /((\w)+)/; print join ',', @+;
(1)
6,6
(2)
6,6,6
(3)
1,6
Имеется примерно такой текст:
$_='XXXXX5'
, где сначала идут n
символов X
, а за ними число n
. Какие регулярные выражения соответствуют всему этому тексту?
(1)
'XXXXX5' =~ /(X+)(??{ length($1) })/
(2)
'XXXXX5' =~ /(X+)(??{ 'length($1)' })/
(3)
'XXXXX5' =~ /(X+)(??{ "length($1)" })/
Какое значение получит переменная my $re=qr/(\d)+/;
'123' =~ $re;
'456' =~ //;
$1
в результате работы программы
(1)
3
(2)
6
(3)
4
Что будет напечатано в результате работы оператораprint join '-', split /:/, ':a:b:c:';
(1)
a-b-c-
(2)
a-b-c
(3)
-a-b-c
Какой фрагмент будет захвачен в строке
'abc! 23!'
в переменную $1
регулярным выражением /(\w\w)+!/
?
(1) никакой
(2)
bc
(3)
23
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /(?<=(\w{2}?))(?=\d+?)/
?
(1)
bc
(2)
ab
(3) пустой фрагмент
(4)
c
Нужно из текста в
$_
захватить в массив @a
все слова, которые состоят только из латинских букв и содержат букву h
независимо от регистра. В каких вариантах это делается верно?
(1)
my @a=/\b[a-z]+h[a-z]+\b/gi
(2)
my @a=/[a-zA-Z]+h[a-zA-Z]+/g
(3)
my @a=/[a-z]+h[a-z]+/gi
(4)
my @a=/[A-Z]*h[A-Z]*/gi
(5)
my @a=/\b[A-Za-z]*[hH][A-Za-z]*\b/g
Какое значение получит массив
@a
в результате работы оператора my @a = "abc!abc" =~ /\w+/g
?
(1)
(abc)
(2)
() или пусто
(3)
(abc, abc)
Что выйдет на печать в результате работы программы
$_="123!abc!"; pos($_)=4; print /\G(\w+)!/
?
(1)
123
(2)
abc
(3)
123abc
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; s/\U[a-z]/!/
?
(1)
!Bc
(2)
a!c
(3)
aBc
В $_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href = " mailto: a+b\@de-f.co.uk " >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?
$_
дан текст:
(1)
/href\s*=.*mailto:\s*([\w+.-]+\@[.\w-]+)/g
(2)
/href\s*=.*?mailto:\s*([\w+.-]+\@[.\w-]+)/g
(3)
/href\s*=.*?mailto:\s*?([\w+.-]+\@[.\w-]+)/g
Какое значение будет иметь переменная $a в результате работы программыmy $a=0; 'abcABC' =~ /(?:abc(?{ ++$a })|ABC(?{ ++$a }))(?!\w)/;
(1)
0
(2)
1
(3)
2
Какие регулярные выражения захватят в
$1
только подстроку '123 a-bc'
в строке 'xyz 123 a-bc uvw'
?
(1)
/(\d+[\s\w-]+)/
(2)
/(\d+\s+[\w-]*)/
(3)
/\S+\s+(\d+\s*[a-bc]+)/
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/;
print 'OK' if 'a' =~ /$re/;
(1)
OK
(2) ничего
Что будет напечатано в результате работы программы'123' =~ /(\d+)/;
{ '456' =~ /(\d+)/ }
print $1;?
(1)
123
(2)
456
Строка в
$_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
(1)
/^(?:(?>(\d+))(??{ $n < $1 ? ',|\z' : '(?!)' })(?{ $n=$1 }))+$/
(2)
/^(?:(?>(\d+))(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+$/
(3)
/^(?:(?>(\d+))(??{ $n <= $1 ? ',|$' : '(?!)' })(?{ $n=$1 }))+$/
Какое значение получит переменная my $a='';
my $re=qr/(\d)+/;
'123' =~ $re;
$re=qr/(\d+)/;
'456' =~ /$a/;
$1
в результате работы программы
(1)
123
(2)
456
(3)
6
Что будет напечатано в результате работы оператораprint join '-', split //, 'abc', 2;
(1)
a-b-c
(2)
a-bc
(3)
abc
Будут ли возвраты в процессе работы оператора
'abc123' =~ /(?>[a123]+|\w+)$/
?
(1) да
(2) нет
Что выйдет на печать в результате работы оператора
'abc123' =~ /\w+(?=(\d+))(?{ print $1 })/
?
(1)
123
(2)
3
(3)
undefined
Надо у каждого слова в тексте удалить последний символ. Какие операторы делают это правильно?
(1)
s/\w*?\b//g
(2)
s/\w+?\b//g
(3)
s/(\w)\b/$1/g
(4)
s/(\w+)\w/$1/g
(5)
s/(\w*)\w/$1/g
(6)
s/\w\b//g
Какое значение получит переменная
$1
в результате работы программы "abc\n" =~ /\w\Z(.)\z/s
?
(1)
\n
(2)
undefined
(3)
c
Какое значение получит переменная
$_
в результате работы программы $_="123!abc!"; pos($_)=4; s/\G(\w+)!/x/g
?
(1)
123!x
(2)
x!x
(3)
123!x!
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; my $a='[a-z]+'; s/\U$a/!/
?
(1)
!!!
(2)
!Bc
(3)
!B!
(4)
a!c
В $_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?
$_
дан текст:
(1)
/href=.*(?:mailto:)?([^>"]+)>/g
(2)
/href=(?:"mailto:)?([^>"]+)(?:"|>)/g
(3)
/href=(?:"mailto:)?([^>"]+)[">]/g
Что напечатается в результате работы программыour $a; 'abcABC' =~ /(?{ local $a=0 })(?:abc(?{ ++$a })|ABC(?{ $a+=10 }))(?!\w)(?{ print $a })/
(1)
0
(2)
1
(3)
10
(4)
11
В тексте надо захватить в
$1
фрагмент от предпоследних до последних кавычек. Какие операторы делают это правильно?
(1)
/"([^"]*)"[^"]*/
(2)
/"([^"]*)"[^"]*$/
(3)
/[^"]+"(.+)"/s
(4)
/.*"([^"]*)"/s
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/;
print 'OK' if '$a' =~ /$re/;
(1)
OK
(2) ничего
Какое значение получит переменная my $a; 'abc' =~ /(\w+(\w))(?{ $a=$^N })/;
$a
в результате работы программы
(1)
c
(2)
abc
(3)
undefined
Какие операторы возвращают истину?
(1)
'XXX' =~ /^(??{ '\Uxxx' })$/
(2)
'XXX' =~ /^(??{ my $a='XXX' })$/
(3)
'XXX' =~ /^(??{ my $a='XXX'; $a })$/
Что будет напечатано в результате выполнения программыmy $a=$_='a';
while ($a ne 'd' && /$a/o) { print $&; $_++; $a++; }
(1)
abc
(2)
a
(3)
aaa
Что будет напечатано в результате работы программы$a='-';
for (0..1)
{ print split /$a/o, 'a-b:c' . "!";
$a=':';
}
(1)
a-b:c!a-b:c!
(2)
ab:c!ab:c!
(3)
ab:c!a-bc!
Какой фрагмент строки будет захвачен в переменную
$1
в операторе '!1a' =~ /((?>[!\d]+|\S+))$/
?
(1)
!1
(2)
a
(3)
!1a
Какое значение получит переменная
$2
в результате работы программы 'aBc1b23' =~ /a(\w)\w+(\1)/
?
(1) пусто
(2)
undefined
(3)
b
(4)
B
В тексте надо заменить все строчные латинские буквы соответствующими прописными. Какие операторы делают это правильно?
(1)
s/\w+/uc $1/ge
(2)
s/(\w)/$1/gei
(3)
s/([a-z])/$1/gei
(4)
s/([a-z])/uc $1/g
(5)
s/([a-z])/uc $1/ge
(6)
s/(\w)/uc $1/ge
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; s/(\d)/$1+100/eg
?
(1)
abc123
(2)
abc10123
(3)
abc101102103
Какое значение получит переменная
$1
в результате работы программы $_="123!abc!"; /\w+/g; /(\w+)/g
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_='[a-z]+abcABC'; my $a='[a-z]+'; s/\Q$a\E\w+/!/
?
(1)
[a-z+]!bcABC
(2)
!bcABC
(3)
!
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?
(1)
print "$1\@$2" if /\@.*=.([^'"]+).[^'"]+['"]([^'"]+)/s
(2)
print "$1\@$2" if /\@.*=.([^'"]+).[^'"]+.([^'"]+)/
(3)
print "$1\@$2" if /\@[^=]+=.([^'"]+).[^'"]+.([^'"]+)/
Какое значение примет переменная my $n;
$_='abc ab abcd';
/(?<!\w)((?>\w+))(?{$n=$+ if !defined($n) || $n gt $+})(?!)/?
$n
в результате работы программы
(1)
ab
(2)
abc
(3)
abcd
(4)
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в
$1
имя диска. Какие операторы делают это правильно?
(1)
/(.+)\\/
(2)
/(.+)\/
(3)
/([^\]+)\\/
(4)
/([^\\]+)\\/
(5)
/^([^\\]*)\\/
(6)
/(.+?)\\/
Что будет напечатано в результате работы программыmy $re=qr/(\w+)\w/; print $1 if 'abcabc' =~ /$re+/;
(1) ничего
(2)
ab
(3)
abcab
Что будет напечатано в результате работы программы$_='abc123def';
/\d+/;
print substr $_, $-[0], $+[0] - $-[0];
(1)
abc
(2)
123
(3)
def
Какие операторы возвращают истину??
(1)
'ABCD' =~ /^(??{ "(?i)abc" })D$/
(2)
'ABCD' =~ /^(??{ "(?i)abc" })d$/
(3)
'ABCD' =~ /^(??{ "\Uabc" })d$/
Что будет напечатано в результате выполнения программыmy $a='a';
$b='ab';
while ($a ne 'd' && $b =~ /(??{ "$a" })/o) { print $&; $a++; }
(1)
abc
(2)
ab
(3)
a
Что будет напечатано в результате работы оператораprint join '-', split /(?:\d)/, 'a1b2c';
(1)
a-b-c
(2)
a-1-b-2-c
(3)
a1b2c
Будет ли найдено совпадение в операторе
'abc' =~ /(?>a|\S+)\b/
?
(1) да
(2) нет
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /^(\w+?)(?(1)\s\d+)/m
?
(1)
c
(2)
abc
(3)
undefined
(4) пустой фрагмент
В тексте есть телефонный номер. Примеры номеров:
+7 495 9569214, (834-35)4-34-35, 3-45-56
. Надо захватить в $1
этот номер. Какие операторы делают это правильно?
(1)
/(\+?[\d (-)]+\d)/
(2)
/(\+?[\d ()-]+)/
(3)
/(\+?[\d ()-]+\d)/
(4)
/(+?[\d ()-]+\d)/
(5)
/(\+?[\d ()-]+\d*)/
(6)
/(\+?[-\d ()]+\d)/
Какое значение получит переменная
$1
в результате работы программы "abc123" =~ /(123|abc$)/
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_="123"; s/(?=\d)/!/g
?
(1)
1!2!3!
(2)
!1!2!3!
(3)
!1!2!3
Какое значение получит переменная
$_
в результате работы программы $_='abcABC'; my $re=qr'[a-z]+'; s/$re/!/i
?
(1)
!ABC
(2)
!
(3)
abc!
В переменной <html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?
$_
находится HTML-страница. Надо проверить, есть ли у этой страницы часть head
, и если есть, то есть ли внутри контейнера <head> </head>
тег <base href="…">
. Если он есть, то переменной $base
надо присвоить этот URL из части head
документа. Если в head
нет тега base
, то ничего делать не надо. Пример текста страницы:
(1)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is
(2)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)"#is
(3)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'"]+)#is
Какое значение получит переменная 'ab!abc!' =~ /(\w+)!(?(?{ $1 eq 'abc' })(\w+)|(?{ $1 eq 'ab' }))/
$^R
в результате работы программы
(1) пусто
(2)
undefined
(3)
1
Какие регулярные выражения захватят в
$1
подстроку 'yahoo!'
, а в $2
- подстроку 'a_bc'
из строки 'ab!c yahoo! a_bc'
?
(1)
/([\w!]+)\s+(\S+)/
(2)
/([\w]+!)\s+(\S+)/
(3)
/([\w]+!)\s+(\w+)/
Что будет напечатано в результате работы программыmy $re=qr/(\w+)c/; print $1 if 'abcabc' =~ m'$re+';
(1) ничего
(2)
abc
(3)
abcab
Какое значение получит переменная $_='abc123def';
/(\w+)/;
/(?>\d+)(\d+)/;
$1
в результате работы программы
(1)
abc123def
(2)
23
(3)
3
Что будет напечатано в результате выполнения программыuse re 'eval';
my $a=$b=1;
while ($a < 4 && $b =~ /(?{ ++$a })$a/o) { print $&; $b++; }
(1) ничего
(2)
123
(3)
1
Что будет напечатано в результате работы оператораprint join '-', grep /\d/, qw/a 11 b 22 c/;
(1)
a-11-b-22-c
(2)
11-22
(3)
1-1-2-2
Какой текст будет захвачен, соответственно, в переменную
$1
и $2
следующим оператором: 'abcd' =~ /(\w*)(\w+)/
?
(1)
a
и bcd
(2)
abc
и d
(3)
ab
и cd
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(?s:(.*))/
?
(1)
abc\n123
(2)
abc
(3) пустой фрагмент
Какое значение получит переменная
$1
в результате работы программы "123abc" =~ /(\d)+\d+(?(1)abc)/
?
(1)
1
(2) 2
(3)
12
Какое значение получит переменная
$1
в результате работы программы my @a = "123" =~ /\G(?=\d)(\d)/g
?
(1)
1
(2)
2
(3)
3
Какое значение получит переменная
$_
в результате работы программы $_='abcABCdefDEF'; my $re=qr'[A-Z]+'i; s/${re}defDEF/!/
?
(1)
abc!defDEF
(2)
!
(3)
abcABCdefDEF
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?
(1)
print join "\n", !<a\s+href=.*(http://[^"]+)!g;
(2)
print join "\n", m!<a\s*href=.*?(h.+)"!g;
(3)
print join "\n", m!<a\s*href=.*?(h.+?)"!g;
Какое значение примет переменная 'ab!abc!a!' =~ /(?:(\w+)!){2}(?(?{ $1 gt $2 })$)/?
$2
в результате работы программы
(1)
a
(2)
ab
(3)
abc
Какие операторы удаляют все пробельные символы только в начале каждой строки текста?
(1)
s/^ +//m
(2)
s/^ *//m
(3)
s/^\s+//g
(4)
s/^\s*//gms
(5)
s/^\s+?//g
(6)
s/^\s*?//g
(7)
s/^[\r\3\t]+//g
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/;
$a='A';
print 'OK' if 'A' =~ /$re/i;
(1)
OK
(2) ничего
Какое значение получит переменная my $a=10; 'abc123' =~ /((\w)+(?{ $a=$+ }))/;
$a
в результате работы программы
(1)
10
(2)
3
(3)
abc123
Какое значение получит переменная 'abc123def' =~ /(abc(??{ '(\d+)' })def)/;
$1
после выполнения оператора
(1)
abc123
(2)
123
(3)
undefined
Какое значение получит переменная my $a='';
'abc' =~ /(\w+)/;
'123' =~ /$a/;
$1
в результате работы программы
(1)
abc
(2)
123
(3)
undefined
Что будет напечатано в результате работы оператораprint join '-', split /$/, "ab\nbc\nde";
(1) ab
bc
de
(2) ab
-bc
-de
Какое телефонный номер будет захвачен в переменную
$1
в следующем операторе поиска: '123-45-67 123-45 1234' =~ /(12[\d-]+|123[\d-]+|1[\d-]+)/
?
(1)
123-45-67
(2)
123-45
(3)
1234
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /\w+?((?!\d+?))/
, если известно, что это не undefined
?
(1)
1
(2)
123
(3) пустой фрагмент
Нужно из текста
$_='2007/3/15'
захватить год, месяц и день, соответственно, в $year, $month
и $day
. В каких вариантах это делается верно?
(1)
/(\d+)/; m!\d+/(\d+)!; m!\d+/\d+/(\d+)!; my($year,$month,$day)=($1,$2,$3);
(2)
my($year,$month,$day)=m!(\d+)/(\d+)/(\d+)!g
(3)
my($year,$month,$day)=m!(\d+)/(\d+)/(\d+)!
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /^(\w+)(?=\Z)/
?
(1)
abc
(2)
123
(3)
undefined
Что выйдет на печать в результате работы программы
$_="123!abc!"; my @a = /\G\w+(?{ print pos $_ })!/g
?
(1)
3
(2)
37
(3)
37123!abc!
(4)
371
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; my $a='[abc]'; s/$a/!/
?
(1)
!!!123
(2)
!bc123
(3)
!123
Имеются следующие адреса электронной почты: ab.c@def.com, a+b@de-f.co.uk, a-b@def.ijk.co.uk. Какие регулярные выражения соответствуют всем этим адресам?
(1)
[a-z.+]+\@[.\w-]+
(2)
[A-z+-.]+\@[.\w-]+
(3)
[A-z+.-]+\@[.\w-]+
Какое значение будет иметь переменная my $a=1; 'abcABC' =~ /abc(?(?{ $a })ABC)/;
$^R
в результате работы программы
(1)
1
(2) пусто
(3)
undefined
Какие регулярные выражения соответствуют всей строке
'1a2b3c+'
?
(1)
/\w++/
(2)
/[\d\w]++/
(3)
/[\w+]*/
(4)
/\S+/
Что будет напечатано в результате работы программыmy $a='[a-z]';
my $re=qr/$a/i;
print 'OK' if 'A' =~ /$re/
(1)
OK
(2) ничего
Что будет напечатано в результате работы программы'abc123' =~ /((\w+)+)/; print join ',', @-;
(1)
0,0
(2)
0,0,0
(3)
0,5
Имеется примерно такой текст:
$_='5XXXXX'
, где сначала идет число n
и за ним n
символов X
. Какие регулярные выражения соответствуют всему этому тексту?
(1)
'5XXXXX' =~ /(\d+)(??{ 'X' x \1 })/
(2)
'5XXXXX' =~ /(\d+)(??{ 'X' x length($1) })/
(3)
'5XXXXX' =~ /(\d+)(??{ X{$1} })/
Какое значение получит переменная my $a='';
my $re=qr/(\d)+/;
'123' =~ $re;
'456' =~ /$a/;
$1
в результате работы программы
(1)
3
(2)
6
(3)
4
Что будет напечатано в результате работы оператораprint join '-', split /:/, ':a:b:c:', 3;
(1)
-a-b-c
(2)
a-b-c
(3)
-a-b-:c:
Какой фрагмент будет захвачен в строке
'abc? 23?'
в переменную $1
регулярным выражением /(\w\w)+?/
?
(1)
abc?
(2)
bc?
(3)
ab
Какое значение будет иметь переменная
$1
в результате работы оператора 'abc123' =~ /(?<=(\d))(?= \d+)/
?
(1)
1
(2)
2
(3) пустой фрагмент
(4)
undefined
Нужно из текста в
$_
захватить в массив @a
все слова, состоящие только из латинских букв и содержащие единственную букву h
, которая не стоит с краю, независимо от регистра. В каких вариантах это делается верно?
(1)
my @a=/\b[a-gi-z]+h[a-gi-z]+\b/gi
(2)
my @a=/[a-gi-zA-GI-Z]+h[a-gi-zA-GI-Z]+/g
(3)
my @a=/[a-gi-z]+h[a-gi-z]+/gi
(4)
my @a=/[A-GI-Z]+h[A-GI-Z]+/gi
(5)
my @a=/\b[A-GI-Za-gi-z]+[hH][A-GI-Za-gi-z]+\b/g
Какое значение получит массив
@a
в результате работы оператора my @a = "abc!abc" =~ /\G\w+/g
?
(1)
(abc)
(2)
() или пусто
(3)
(abc, abc)
Что выйдет на печать в результате работы программы
$_="123!abc!"; pos($_)=4; print /\A(\w+)!/
?
(1)
123
(2)
abc
(3)
123abc
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; s/\L[a-z]/!/gi
?
(1)
!!!
(2)
!B!
(3)
a!c
В $_ дан текст:$_=<<EOD;
Первый адрес:<a href='mailto:abc\@def.com'>abc\@def.com</a>,
второй адрес - <a href='mailto:ab.c\@def.com'>ab.c\@def.com</a>
третий адрес - <a
href = " mailto: a+b\@de-f.co.uk " >a-b\@def.ijk.co.uk</a>
EOD
Какие операторы извлекают все 3 адреса электронной почты из этого текста?
(1)
/:.*([\w+.-]+\@[.\w-]+)/g
(2)
/:.*?([\w+.-]+\@[.\w-]+)/g
(3)
/:\s*([\w+.-]+\@[.\w-]+)/g
Какое значение будет иметь переменная $a в результате работы программыmy $a=0; 'abcABC' =~ /(?:abc(?{ ++$a })|ABC(?{ $a+=10 }))(?!$)/;
(1)
0
(2)
1
(3)
10
(4)
11
Какие регулярные выражения захватят в
$1
только подстроку 'ab+c 1-23'
в строке 'xyz ab+c 1-23 uvw'
?
(1)
/(a[\w+]+\s+[\d-]+)/
(2)
/\S+\s+(\w+\+\w+\s+\d-\d*)/
(3)
/\S+\s+(\w+\+\w+\s+\d-\d*?)/
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/;
print 'OK' if 'a' =~ m'$re';
?:
(1)
OK
(2) ничего
Какое значение получит переменная { 'abc' =~ /(\w+)/ }
{ '123' =~ /(\d+)/ }
$1
в результате работы программы
(1)
abc
(2)
123
(3)
undefined
Строка в
$_
состоит из нескольких натуральных чисел, разделенных запятыми, числа строго возрастают. Например: $_='11,12,30'
. Какие регулярные выражения соответствуют каждой такой строке?
(1)
/^(?:(\d+)(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+$/
(2)
/^(?:(\d+)(??{ $n < $1 ? ',|\Z' : '(?!)' })(?{ $n=$1 }))+\z/
(3)
/^(?:(\d+)(??{ $n < $1 ? '$|,' : '(?!)' })(?{ $n=$+ }))+\z/
Какое значение получит переменная my $re=qr/(?>(\d)+)\d/;
'123' =~ $re;
$re=qr/(\d+)/;
'456' =~ //;
$1
в результате работы программы
(1)
12
(2)
45
(3)
undefined
Что будет напечатано в результате работы оператораprint join '-', split /\s+/, 'abc';
(1)
a-b-c
(2)
abc
(3)
abc-
Будут ли возвраты в процессе работы оператора
'abc123' =~ /(?>[a123]+|\w+)/
?:
(1) да
(2) нет
Что выйдет на печать в результате работы оператора
'abc123' =~ /\w*?(?=(\d+))(?{ print $1 })/
?
(1)
3
(2)
123
(3)
undefined
Надо у каждого слова в тексте удалить первый символ. Какие операторы делают это правильно?
(1)
s/\b\w//g
(2)
s/\b\w+?//g
(3)
s/\w(\w+)\b/$1/g
(4)
s/\w*(\w+)/$1/g
(5)
s/\w(\w*)/$1/g
Какое значение получит переменная
$1
в результате работы программы "abc\n123\n" =~ /(\w)$(?#).\z/ms
?
(1)
c
(2)
undefined
(3)
3
Какое значение получит переменная
$_
в результате работы программы $_="123!abc!"; s/(\w+)!/x/
?
(1)
xabc!
(2)
xx
(3)
x!x!
Какое значение получит переменная
$_
в результате работы программы $_='aBc'; my $a='[a-z]+'; s/\L$a/!/g
?
(1)
!!!
(2)
!Bc
(3)
!B!
(4)
a!c
В $_=<<EOD;
Первый адрес:<a href="mailto:abc\@def.com">abc\@def.com</a>,
второй адрес - <a href=http://www.intuit.ru>intuit.ru</a>
EOD
Какие операторы извлекают оба адреса из этого текста?
$_
дан текст:
(1)
/href="?(?:mailto:)?([^>"]+)[">]/g
(2)
/href=.*?(?::)?([^>"]+)[">]/g
(3)
/href=.*?(?:mailto:)?([^>"]+)["]/?>
Что напечатается в результате работы программыour $a; 'abcABC' =~ /(?{ local $a=0 })(?:abc(?{ ++$a })|ABC(?{ $a+=10 }))(?!$)(?{ print $a })/
(1)
0
(2)
1
(3)
10
(4)
11
В тексте надо захватить в
$1
фрагмент от первых до третьих кавычек. Какой оператор делает это правильно?
(1)
/"([^"]*"[^"]*)"/
(2)
/"([^"]*"[^"]+)"/
(3)
/"(.*".*)"/
(4)
/"(.*".*)"/s
(5)
/"(.|")"/s
Что будет напечатано в результате работы программыmy $a='a';
my $re=qr/$a/;
print 'OK' if '$a' =~ /\$re/;
(1)
OK
(2) ничего
Какое значение получит переменная my $a; 'abc' =~ /(\w+(\w))(?{ $a=$+ })/;
$a
в результате работы программы
(1)
c
(2)
abc
(3)
undefined
Какие операторы возвращают истину?
(1)
'123' =~ /^(??{ 123 })$/
(2)
'123' =~ /^(??{ '123' })$/
(3)
'123' =~ /^(??{ 124-1 })$/
(4)
'-123' =~ /^(??{ 1-124 })$/
Что будет напечатано в результате выполнения программыmy $a=$_=1;
while ($a < 4 && /$a/o) { print $&; $_++; $a++; }
(1)
123
(2)
1
(3)
111
Что будет напечатано в результате работы программы$a='-';
for (0..1)
{ print split (/$a/o, 'a-b:c', 2);
print '!';
$a=':';
}
(1)
ab:c!ab:c!
(2)
ab:c!a-bc!
(3)
a-b:c!a-b:c!
Какой фрагмент строки будет захвачен в переменную
$1
в операторе '!1a' =~ /((?>[!\d]+|\S+))/
?
(1)
!1
(2)
a
(3)
!1a
Какое значение получит переменная
$1
в результате работы программы 'aBc1b23' =~ /a(\w)\w+(\1)/
?
(1) пусто
(2)
undefined
(3)
b
(4)
B
В тексте надо все цифры увеличить на 1, а 9 заменить на 0. Какие операторы делают это правильно?
(1)
s/(\d)/++$1/ge
(2)
s/(\d)/my $a=''.$1; ++$a/ge
(3)
s/(\d)/$1 < 9 ? $1+1 : 0/ge
(4)
s/(\d+)/$1 < 9 ? $1+1 : 0/ge
(5)
s/(\d*)/$1 < 9 ? $1+1 : 0/ge
(6)
s/(\d)/($1+1)%10/ge
Какое значение получит переменная
$_
в результате работы программы $_='abc123'; s/(\d)/$1+100/
?
(1)
abc1+10023
(2)
abc10123
(3)
abc$1+10023
Какое значение получит переменная
$1
в результате работы программы $_="123!abc!"; /\w+/; /(\w+)/g
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_='[a-z]+abcABC'; my $a='[a-z]+'; s/\Q$a\E.*[A-Z]/!/
?
(1)
!BC
(2)
!
(3)
[a-z]+abcABC
Адрес abc@intuit.ru зашифрован скриптом:$_=<<EOD;
<script>
a='\@';
e='abc'+a+'intuit.ru';
document.write('<a href=m'+'ailto:'+e+'><b>'+e+'</b></a>');
</script>
EOD
Какие операторы правильно печатают этот адрес?
(1)
print "$1\@$2" if /\@[^=]+=.*?([^'"]+).[^'"]+.([^'"]+)/
(2)
print "$1\@$2" if /\@[^=]+=.*?([^'"]+).+?[^'"]+.([^'"]+)/
(3)
print "$1\@$2" if /\@[^=]+=.([^'"]+).[^'"]+.+([^'"]+)/
Какое значение примет переменная my $n;
$_='abc ab abcd';
/(?<!\w)(\w+)(?{$n=$+ if !defined($n) || $n gt $+})(?!)/?
$n
в результате работы программы
(1)
a
(2)
ab
(3)
abc
Строка содержит полный путь и имя файла в Windows и ничего больше. Надо захватить в
$1
весь путь без имени диска и имени файла. Какие операторы делают это правильно?
(1)
/[^:]*:(.*\\)/
(2)
/[^:]*?:(.*\\)/
(3)
/[^:]*:(.*?\\)/
(4)
/[^\\]+(.*?\\)/
(5)
/[^\\]+(.*\\)/s
(6)
/^[^\\]+(.*\\)/
Что будет напечатано в результате работы программыmy $re=qr/(\w+)c/; print $1 if 'abcabc' =~ /$re+/;
(1) ничего
(2)
abc
(3)
abcab
Что будет напечатано в результате работы программы$_='abc123def';
/\d+/;
print substr $_, $+[0];
(1)
abc
(2)
123
(3)
def
Какие операторы возвращают истину?
(1)
'ABCD' =~ /^(??{ "\Uabc" })D$/
(2)
'ABCD' =~ /^(??{ "\QABC" })D$/
(3)
/^(??{ "(?i)\lABC" })D$/
Что будет напечатано в результате выполнения программыmy $a=$b=1;
while ($a < 4 && $b =~ /(??{ "$a" })/o) { print $&; $b++; $a++; }
(1)
123
(2)
1
(3)
111
Что будет напечатано в результате работы оператораprint join '-', split /\d/, 'a1b2c';
(1)
a-b-c
(2)
a-1-b-2-c
(3)
a1b2c
Будет ли найдено совпадение в операторе
'abc' =~ /(?>\d+|\z)/
?
(1) да
(2) нет
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ / ^(\w+?)(?(1)^\d+) /m
?
(1)
c
(2)
abc
(3)
undefined
(4) пустой фрагмент
В тексте по ошибке автора встречаются удвоения слов, например:
"I write write a letter"
. Это надо исправить, чтобы получилось "I write a letter"
. Какие операторы делают это правильно?
(1)
s/\b(\w+)\s+\1\b/$1/gi
(2)
s/\b(\w+)\s+\1\b/$1/g
(3)
s/\b(\w+)\s+\1\b/$1/i
(4)
s/\b(\w+)(\s+)\1\b/$1$2/gi
(5)
s/\b((\w+)\s+)\2\b/$1/gi
(6)
s/\b((\w+)\s+)\1\b/$1/gi
Какое значение получит переменная
$1
в результате работы программы "abc123" =~ /(123$|abc)/
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_="123"; s/(?<=\d)/!/g
?
(1)
1!2!3!
(2)
!1!2!3!
(3)
!1!2!3
Какое значение получит переменная
$_
в результате работы программы $_='abcABC'; my $re=qr'[A-Z]+'; s/$re/!/gi
?
(1)
!ABC
(2)
!
(3)
abc!
В переменной <html>
<head>
<title>Title</title>
<base href="http://www.intuit.ru/download">
</head>
…
Какие операторы делают это корректно, учитывая разное оформление тегов веб-мастерами?
$_
находится HTML-страница. Надо проверить, есть ли у этой страницы часть head
, и если есть, то есть ли внутри контейнера <head> </head>
тег <base href="…">
. Если он есть, то переменной $base
надо присвоить этот URL из части head
документа. Если в head
нет тега base
, то ничего делать не надо. Пример текста страницы:
(1)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]([^'">\s]+)#is
(2)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?(?:[^'">\s]+)#is
(3)
$base=$1 if m#<head[^>]*>(?>(?!<base|</head).)+<base\s+href\s*=\s*['"]?([^'">\s]+)#is
Какое значение получит переменная ' 'ab!abc!' =~ /(\w+)!(?(?{ $1 ne 'abc' })(\w+)|(?{ $1 eq 'ab' }))/
$^R
в результате работы программы
(1) пусто
(2)
undefined
(3)
1
Какие регулярные выражения захватят в
$1
подстроку 'ab?c'
, а в $2
- подстроку 'abc?'
из строки '12?a ab?c abc?'
?
(1)
/([\w?]+)\s+(\S+)/
(2)
(a[\w?]+\s+)(\S+)
(3)
/([a-z]+[?\w]*)\s+(\S+)/
Что будет напечатано в результате работы программыmy $re=qr'(\w+)c'; print $1 if '(\w+)c' =~ /$re/;
(1) ничего
(2)
(\w+)c
(3)
(\w+)
Какое значение получит переменная $_='abc123def';
/(\w+)/;
/(?>\d+)(\d*)/;
$1
в результате работы программы
(1)
abc123def
(2)
3
(3) пустое
Укажите относительный URI:
(1)
'ABC' =~ /^(??{ 'ABC\\Z' })/
(2)
'ABC' =~ /^(??{ 'ABC\\z' })/
(3)
'ABC' =~ /^(??{ 'ABC\$' })/
Что будет напечатано в результате выполнения программыmy $b='ab';
my $a='a';
while ($a ne 'd' && $b =~ /(?{ ++$a })$a/o) { print $&; }
(1)
aa
(2)
ab
(3)
aaa
Что будет напечатано в результате работы оператораprint join '-', grep /^\d{2,}/, qw/a 1 b 22 c/;
(1)
1-22
(2)
22
(3) ничего не напечатается
Какой текст будет захвачен, соответственно, в переменную
$1
и $2
следующим оператором: 'abcd' =~ /(\w*?)(\w+)/
?
(1)
a и bcd
(2)
abc и d
(3)
ab и cd
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(\S*)$/
?
(1)
abc
(2)
123
(3) пустой фрагмент
(4)
undefined
Какое значение получит массив
@a
в результате работы программы my @a="abc\n123" =~ /\w/g
?
(1)
(a)
(2)
() или пусто
(3)
(a, b, c, 1, 2, 3)
Какое значение получит переменная
$1
в результате работы программы "123abc" =~ /(\d)+(\d+)(?(?{ $1 < $2 })abc)/
?
(1)
1
(2)
2
(3)
undefined
Какое значение получит переменная
$1
в результате работы программы my @a = "123" =~ /\G(?=\d)(\d)/
?
(1)
1
(2)
2
(3)
3
Какое значение получит переменная
$_
в результате работы программы $_='abcABCdefDEF'; my $re=qr'[A-Z]+'; s/${re}\L[A-Z]+/!/
?
(1)
abc!defDEF
(2)
abc!DEF
(3)
abcABCdefDEF
Дан текст:$_=<<EOD;
<a href='javascript:void(window.open("http://intuit.ru/book.html","","width=480,height=320"))'>Book</a><br>
<a href="http://intuit.ru/index.html">index</a>
EOD
Какие операторы правильно печатают обе ссылки?
(1)
print join "\n", /<a\s+href=.*(http://[^"]+)/g
(2)
print join "\n", m/<a\s+href=.*(http://[^"]+)/g
(3)
print join "\n", m!<a\s+href=.*(http://[^"]+)!g
Какое значение примет переменная 'ab!abc!a!' =~ /(\w+)!(\w+)!(?(?{ $1 lt $2 })(?!\w))/
$2
в результате работы программы
(1)
a
(2)
b
(3)
ab
Какие операторы удаляют все пробельные символы только в конце каждой строки текста?
(1)
s/ +$//m
(2)
s/\s*//m
(3)
s/\s+\Z//g
(4)
s/\s*$//gms
(5)
s/\s+?$//g
(6)
s/\s*?$//g
(7)
s/\s*?//g
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /^(\w+)(?=\Z)/m
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$1
в результате выполнения программы "abc\n123" =~ /(?m)(\S*)$/
?
(1)
abc
(2)
123
(3) пустой фрагмент
(4)
undefined
Какое значение получит переменная
$_
в результате работы программы $_='abcABCdefDEF'; my $re=qr'[A-Z]+'; s/${re}[A-Z]+/!/
?
(1)
abc!defDEF
(2)
abc!DEF
(3)
abcABCdefDEF
Что выйдет на печать в результате работы программы
$_="123!abc!"; pos($_)=4; print /\A(\w+)!/g
?
(1)
123
(2)
abc
(3) ничего не напечатается
Какое значение получит переменная
$_
в результате работы программы $_="123!abc!"; s/(\w+)!/x/g
?
(1)
xabc!
(2)
xx
(3)
x!x!
Какое значение получит переменная
$1
в результате работы программы $_="123!abc!"; /\w+/gc; /(\w+)/g
?
(1)
abc
(2)
123
(3)
undefined
Какое значение получит переменная
$_
в результате работы программы $_="123"; s/(?!\d)/!/g
?
(1)
123
(2)
123!
(3)
!!!